各种长度的动态字符串的所有可能组合?

时间:2015-06-22 12:29:28

标签: java string

我需要打印任何String的所有可能组合而不重复任何字符, 例如假设输入是 - ABC 所需的组合是 - ABC ACB BCA BAC CAB CBA

以下是我运行良好的代码 -

public static void main(String[] args) {
String name="abcd";
    char[] nameArray=name.toCharArray();
    String result = null;
    int flag=0;
    for(int i=0;i<nameArray.length;i++){
        for(int j=0;j<nameArray.length;j++){
            for(int k=0;k<nameArray.length;k++){
                for(int l=0;l<nameArray.length;l++){
                     result=""+nameArray[i]+nameArray[j]+nameArray[k]+nameArray[l];
                     flag=0;
                        for(Character c:nameArray){
                            if(!result.contains(c.toString())){
                                flag=1;
                            }
                        }
                        if( flag==0){
                            System.out.println(result);
                        }
                }
            }
        }
    }
}

问题是这是一个静态的,就像 - 我们使用4 for循环,因为String的长度是4.如何为不同长度的动态字符串编写相同的代码? 它的时间复杂度也非常高(n ^ n),但这不是一个主要问题。

1 个答案:

答案 0 :(得分:0)

为您找到了这个博客&#34;

  

http://javahungry.blogspot.com/2013/06/find-all-possible-permutations-of-given.html

使用recursion并准确解释他正在做什么。您可以在之后或在打印排列的代码中删除重复项。