0
public boolean isPalindrome3(String input, int index, int length)
{
    if(index > (length-1-index))
        return true;

    else if(input.charAt(index)!=input.charAt(length-1-index))
        return false;

    else
        return isPalindrome3(input, index + 1, length);



}

ここで最初に、入力文字列 0, input.length() を渡します

4

3 に答える 3

3

再帰を使用する必要がない場合は、回文のはるかに効率的なチェックを次に示します。

public boolean isPalindrome3(String input)
{
    for (int start = 0, end = input.length() - 1; start < end; ) {
        if (input.charAt(start++) != input.charAt(end--)) {
            return false;
        }
    }
    return true;
}
于 2012-08-02T19:01:27.623 に答える
0
public static String reverseString(String s) {       
    byte[] array = s.getBytes();
    byte swap;

    for( int i = 0, j = array.length - 1; i < array.length / 2; i++, j--) {
        swap = array[ j ];
        array[ j ] = array[ i ];
        array[ i ] = swap;
    }

    return (new String(array));
}

if(myString.equals(reverseString(myString)))
    // is palindrome
于 2012-12-13T19:20:21.550 に答える
0

私は次のように書きます:

public boolean isPalindrome(String str, int offset)
{    
    int rightOffset = str.length() - offset - 1;
    if (offset <= rightOffset)
    {
        char c1 = str.charAt(offset);
        char c2 = str.charAt(rightOffset);
        if (c1 != c2) return false;

        return isPalindrome(str, offset + 1);
    } else
    {
        return true;
    }
}

コードとの違い:

  • を渡さないでください。これlengthは String プロパティであるためです。
  • 文字比較を展開する
  • 素敵なコードフォーマット
  • ローカル変数 rightOffset を作成することにより、効率が向上しました。
于 2012-08-02T18:45:20.057 に答える