在练习中,我们被告知以下方法识别回文(向后和向前相同的词),但它不起作用。它接受一些不是回文的叮咬,我们被要求确定方法中的错误在哪里,并且我们可以纠正它。方法clean
剥离空格,然后运行toLowerCase
。
public boolean checkPalindrom(String sc){
boolean isPalindrom = true;
String sr = clean(sc);
for(int i = 0; i < sr.length()/2; i++){
isPalindrom = (sr.charAt(i)==(sr.charAt(sr.length()-1 - i)));
}
return isPalindrom;
}
我找不到任何不是回文但是被这个函数接受的字符串。
任何提示都表示赞赏。
答案 0 :(得分:3)
一旦失败,你永远不会破坏,所以你只需要在最后一次检查时返回。
答案 1 :(得分:1)
这是修复:
public boolean checkPalindrom(String sc){
boolean isPalindrom = true;
String sr = clean(sc);
for(int i = 0; i < sr.length()/2 && isPalindrom; ++i){
isPalindrom = (sr.charAt(i)==(sr.charAt(sr.length()-1 - i)));
}
return isPalindrom;
}
这样,一旦你发现它不是一个palindrom,你就打破了循环。否则,如果它在中间和附近有相同的字母,它将被视为一个回文。
示例:
adcde