【发布时间】:2018-07-24 10:44:40
【问题描述】:
我写了一个算法来解决字符串排列算法。它有问题,在某个地方打印错误的输出。对于不同的输入,我已经多次浏览了我的代码,但我找不到我犯了什么错误。
有人能解释一下我在哪里犯了错误吗?
public static void main(String args[]) throws Exception {
String str1 = "eat";
int len = str1.length();
char[] str = str1.toCharArray();
recurPerm(str,0,len);
}
static void recurPerm(char[] str, int strstartind, int sz) {
for(int i = strstartind; i < sz; i++){
if(i > strstartind) {
char temp = str[strstartind];
str[strstartind] = str[i];
str[i] = temp;
recurPerm(str, strstartind + 1, sz);
}
else {
recurPerm(str, strstartind + 1, sz);
}
}
if(strstartind >= sz){
System.out.println(str);
}
return;
}
输出
eat
eta
tea
tae
eat
eta
但正确的输出是
吃茶吃茶
我也尝试过调试。我发现调试太难了,因为涉及到递归。
【问题讨论】:
-
@NiVeR 输出缺少
aet和ate。
标签: java string algorithm permutation