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

package test;

import java.util.LinkedList;
import java.util.List;

public class PermutaionTest2 {
    public static void main(String[] args) {
        String input = "ABCD";


        List resultList = cal("", input);

        System.out.println(resultList);

    }

    //firt,left
    public static List  cal(String first, String left) {


        List result = new LinkedList();
        if (left.length() > 1) {
            //递归,得到临时结果

            char[] chars = left.toCharArray();
            int len = left.length();
            for (int i = 0; i < len; i++) {
                //把第一位提取出来,剩下的的拼接起来
                List s = new LinkedList();
                s = cal(String.valueOf(chars[i]), left.substring(0, i).concat(left.substring(i+1, len)));

                //对递归结果跟固定为拼接
                for (int j = 0; j < s.size(); j++) {
                    s.set(j,first.concat(s.get(j)));
                }
                result.addAll(s);
            }

            return result;
        } else {

            result.add(first.concat(left));
            return result;
        }

    }


}

你可能感兴趣的:(题目 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串abc,则打印出由字符a,b,c所能排列出来的所有字符串abc,acb,bac,bca,cab和cba。)