我有这个工作代码可以打印字符串排列而无需重复,但无法理解它在逻辑上是如何工作的。任何建议都会非常有帮助。
private static void permutation(String input, String sofar) {
if (input.equals("")) {
System.out.println(count + " " + sofar);
count++;
}
for (int i = 0; i < input.length(); i++) {
char c = input.charAt(i);
if (input.indexOf(c, i + 1) != -1)
continue;
permutation(input.substring(0, i) + input.substring(i + 1), sofar+c);
}
}
函数调用:
String input = "ABBCD";
permutation(input, "");
for (int i = 0; i < input.length(); i++) {
上面的 for 循环很神奇
输入ABCD
迭代
输入:BCD 到目前为止:A .... 递归继续
输入:ACD 到目前为止:B ....
输入:AND软:C ....
输入:ABC 到目前为止:D .....
希望这可以帮助
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)