我之前已经问过这个问题并且对于一些人来说它重复了! 我发现的灵魂都是无效的 我希望这个方法是这样的:
public String[] permutations(String str){//code}
例如,如果我有一个字符串“abc”,则输出应为: a,b,c,ab,ac,ba,bc,ca,cb,abc,acb,bac,bca,cab,cba 我试图将我从void找到的方法转换为String [],但我无法做到。它总是有错误
答案 0 :(得分:0)
尝试以下方法。我不知道你申请的是什么(如果有的话),所以我只是不做。
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()]);
}