Java中没有重复的字符串的所有可能组合

One*_*ror 3 java string

我知道这个问题之前已经在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;   
}
Run Code Online (Sandbox Code Playgroud)

我把这个函数称为printCombinations(s).

Pra*_*tik 7

更改

i<n to i<=n
Run Code Online (Sandbox Code Playgroud)

它应该工作.