Pythonでの文字列の回文判定方法


方法1: 二つのポインタを使用した回文判定

この方法では、文字列の先頭と末尾から同時にポインタを進めていき、対応する文字が一致するかどうかを確認します。

def is_palindrome(s):
    # 文字列を小文字に変換して空白を除去
    s = s.lower().replace(" ", "")

    # 二つのポインタを初期化
    left = 0
    right = len(s) - 1

    while left < right:
        # 左右のポインタが指す文字が一致しない場合、回文ではない
        if s[left] != s[right]:
            return False

        # ポインタを進める
        left += 1
        right -= 1

    # 全ての文字が一致した場合、回文である
    return True

上記のコードでは、与えられた文字列 s を小文字に変換し、空白を除去しています。その後、左端を指すポインタ left を先頭に、右端を指すポインタ right を末尾に初期化します。ループを通じて、leftright の指す文字が一致しているかどうかを確認し、一致しない場合は False を返します。一致している場合は、ポインタを進めていきます。最終的に全ての文字が一致した場合は、与えられた文字列が回文であることが確定します。

この方法は、文字列の長さを n とすると、時間計算量は O(n) であり、効率的に動作します。

コード例:

print(is_palindrome("radar"))  # True
print(is_palindrome("hello"))  # False
print(is_palindrome("A man a plan a canal Panama"))  # True

上記のコード例では、is_palindrome 関数を使用していくつかの文字列を回文かどうか判定しています。True が返される場合は回文であり、False が返される場合は回文ではありません。

以上が、Pythonで文字列が回文かどうかを判定する方法といくつかのコード例です。この方法を使用することで、効率的に回文を判定することができます。