-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 に答える