方法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
を末尾に初期化します。ループを通じて、left
と right
の指す文字が一致しているかどうかを確認し、一致しない場合は 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で文字列が回文かどうかを判定する方法といくつかのコード例です。この方法を使用することで、効率的に回文を判定することができます。