我目前正在尝试接收字符串的所有置换,我不理解示例
我不了解groups()的底层调用,以及for循环如何影响递归调用
public static void combinations(String s, int length) {
Set<String> all = new TreeSet<String>();
combinations(s, "", all, length);
for (String comb : all) {
System.out.println(comb);
}
}
private static void combinations(String s, String chosen,Set<String> all, int length) {
if (length == 0) {
all.add(chosen); // base case: no choices left
} else {
for (int i = 0; i < s.length(); i++) {
String ch = s.substring(i, i + 1);
if (!chosen.contains(ch)) {
String rest = s.substring(0, i) + s.substring(i + 1);
combinations(rest, chosen + ch, all, length - 1);
}
}
}
}
举一个这样的呼叫示例:
public static void main(String[] args){
combinations("sad", 3);
}
输出应为:
广告 阿斯 达斯 dsa 伤心 sda