繁体   English   中英

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

[英]All possible combination of dynamic String of various length?

我需要打印任何字符串的所有可能的组合而不重复任何字符,例如,假设输入为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进行循环,因为String的长度是4。如何为各种长度的动态String编写相同的代码? 而且它的时间复杂度很高(n ^ n),但这不是主要问题。

找到适合您的博客”

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM