我之前問過這個問題,對於一些reaseon人說它重複! 我發現soultions都是無效 我想梅索德是這樣的:返回字符串的字符串排列方法[]
public String[] permutations(String str){//code}
例如,如果我有一個字符串「abc」的輸出應該是: A,B,C,AB,AC ,ba,bc,ca,cb,abc,acb,bac,bca,cab,cba 我試圖將我從void找到的方法轉換爲String [],但我無法做到。它始終有錯誤
我之前問過這個問題,對於一些reaseon人說它重複! 我發現soultions都是無效 我想梅索德是這樣的:返回字符串的字符串排列方法[]
public String[] permutations(String str){//code}
例如,如果我有一個字符串「abc」的輸出應該是: A,B,C,AB,AC ,ba,bc,ca,cb,abc,acb,bac,bca,cab,cba 我試圖將我從void找到的方法轉換爲String [],但我無法做到。它始終有錯誤
請嘗試以下操作。我不知道你正在申請什麼類型(如果有的話),所以我只是沒有做。
public String[] permutations(String str) {
if (str.length() == 0) {
return new String[0];
} else if (str.length() == 1) {
String[] s = new String[1];
s[0] = str;
return s;
}
Set<String> permutations = new HashSet<>();
for (int i = 0; i < str.length(); i++) {
char c = str.charAt(i);
String part = str.substring(0, i) + str.substring(i + 1);
String[] rem = permutations(part);
for (String s : rem) {
permutations.add(s);
for (int j = 0; j <= s.length(); j++) {
String t = s.substring(0, j) + c + s.substring(j);
permutations.add(t);
}
}
}
return permutations.toArray(new String[permutations.size()]);
}
嗨,感謝發佈 解決方案比我的更好,但它跳過一些排列。在「abc」輸入的情況下,它跳過「bca」和「cba」 –
編輯。對不起,現在應該是準確的。我只是將
非常感謝,現在正在工作 –
請發表[最少,完整和可驗證示例](http://stackoverflow.com/help/mcve)。 – MikeCAT
歡迎來到SO。顯示你的代碼併發布你所得到的錯誤。 – randominstanceOfLivingThing
到目前爲止你有什麼? –