题目 输入一个字符串,按字典序打印出该字符串中字符的所有排列。例如输入字符串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<String> resultList = cal("", input);

        System.out.println(resultList);

    }

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


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

            char[] chars = left.toCharArray();
            int len = left.length();
            for (int i = 0; i < len; i++) {
                //把第一位提取出来,剩下的的拼接起来
                List<String> s = new LinkedList<String>();
                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;
        }

    }


}
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容