我需要打印任何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),但这不是一个主要问题。
答案 0 :(得分:0)
为您找到了这个博客&#34;
http://javahungry.blogspot.com/2013/06/find-all-possible-permutations-of-given.html
使用recursion
并准确解释他正在做什么。您可以在之后或在打印排列的代码中删除重复项。