我知道这个问题之前已经在 stackoverflow上得到了回答,但是我要求这不是为了告诉我正确的代码,而是因为我想知道我做错了什么。
public static void printCombinations(String str){
printCombinations(str, 0, str.length()-1);
}
public static void printCombinations(String str,int k,int n){
if(k == n)
System.out.println(str);
else {
for(int i=k;i<n;i++){
String tmp=modifyString(str,i,k);
printCombinations(tmp,k+1,n);
modifyString(str,i,k);
}
}
}
public static String modifyString(String str,int x,int y){
// for swapping characters inside a string
char arr[]=str.toCharArray();
char t= arr[x];
arr[x]=arr[y];
arr[y]=t;
String s= new String(arr);
return s;
}
我将函数称为printCombinations(s)
.