《剑指offer》Java实现--打印字符链表的所有全排列

题目描述

    输入一个字符串,打印出该字符串中字符的所有排列。例如,输入字符串abc,则打印出由字符a、b、c所能排列出来的所有字符串abc、acb、bac、bca、cab和cba。

解题思路

    把字符串分为两部分,一部分是字符串的第一个字符,另一部分是剩下的所有字符,接下来求剩余所有字符串的排列;拿第一个字符与后面字符组个交换。

Java代码实现

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

/**
 * 给定一个字符链表,打印其所有可能的排列(注意不是组合)
 * @author Administrator
 *
 */
public class Exe40_GetAllRankedDatas {

    public static void main(String[] args) {
        
        List ls=new ArrayList();
        ls.add('A');
        ls.add('B');
        ls.add('C');
        solution(ls, 0);

    }
    
    public static void solution(List ls,int n) {
        if(ls==null||ls.size()==0) return;
        else {
            if(n==ls.size()){
                System.out.println(ls.toString());
            }else {
                for(int i=n;i

你可能感兴趣的:(《剑指offer》Java实现--打印字符链表的所有全排列)