1

文字列が回文であるかどうかを確認する簡単な方法があることは知っていますが、ライブラリ関数を使用して試してみたかったので、以下のコードを思いつきました。

public boolean isPalindrome1(String input)
{

    int length = input.length()/2;
    if(input.length()%2!=0)
    {
        length = length + 1;
    }


    return(input.substring(0,length).equals(new StringBuilder(input.substring(length, input.length())).reverse().toString()));
}

文字列の半分が残りの半分の逆と等しいかどうかを確認しようとしています。しかし、奇数と偶数の長さでめちゃくちゃになっています。奇数、偶数の長さ、空の文字列、および長さ = 1 の文字列で機能する場所で、誰かが修正を指摘できますか。

4

2 に答える 2

6

すでにreverse()を使用しています。入力文字列をその逆と比較できないのはなぜですか?そもそもそれはまさにあなたが望んでいることではありませんか?複雑な方法で物事を半分に分割する必要はありません。

于 2012-08-02T16:34:53.183 に答える
2

あなたはできる:

return new StringBuilder(input).reverse().toString().equals(input);

ここにあなたが知りたいように行きます:

public boolean isPalindrome(String input) {
    for (int i = 0; i < input.length() / 2; i++) {
        if (input.charAt(i) != input.charAt(input.length() - 1 - i)) {
            return false;
        }
    }
    return true;
}
于 2012-08-02T16:36:49.163 に答える