-1

在一个练习中,我们被告知以下方法可以识别回文(前后相同的单词),但它不起作用。它接受一些不是回文的刺,我们被要求确定方法中的错误在哪里,以及我们可以纠正它。该方法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;
}

我找不到任何不是回文但被此函数接受的字符串。

任何提示表示赞赏。

4

2 回答 2

3

一旦失败,您永远不会中断,因此您只返回最后一张支票。

于 2013-01-10T23:03:25.637 回答
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;
}

这样,一旦你发现它不是回文,你就打破了循环。否则,如果它的中间和附近有相同的字母,就会被认为是回文。

例子:

adcde
于 2013-01-10T23:05:58.030 回答