記事ディレクトリ
1. トピックの紹介
2. コード戦闘
class Solution:
def isPalindrome(self, x: int) -> bool:
if x < 0:
return False
x_str = str(x)
left = 0
right = len(x_str) - 1
while left < right:
if x_str[left] != x_str[right]:
return False
left += 1
right -= 1
return True
- class Solution:: Solution という名前のクラスを定義します。
- def isPalindrome(self, x: int) -> bool:: isPalindrome というメソッドを定義します。このメソッドは整数 x をパラメータとして受け取り、回文かどうかを示すブール値を返します。
- if x < 0:: x が負の数の場合、負の数は回文になることができないため、直接 False を返します。
- x_str = str(x): 後続の比較のために整数 x を文字列に変換します。
- left = 0 および right = len(x_str) - 1: 左ポインターと右ポインターを初期化します。左は文字列の先頭を指し、右は文字列の末尾を指します。
- while left < right:: ループに入る場合、ループ条件は、左ポインターが右ポインターより小さいこと、つまり文字列全体が比較されていないことです。
- if x_str[left] != x_str[right]:: 左ポインタが指す文字が右ポインタが指す文字と等しくない場合、それは回文ではないことを意味し、直接 False を返します。
- left += 1 および right -= 1: 左ポインタを 1 ビット右に、右ポインタを 1 ビット左にそれぞれ移動し、次の文字の比較を続けます。
- ループが終了すると、文字列全体の比較が完了し、不一致文字が見つからず、回文であることを示す True が返されます。
このコードは、整数を文字列に変換し、ダブル ポインター方式を使用して文字列の両端から中央までを比較し、回文であるかどうかを判断します。比較中に不等な文字が見つかった場合は直接 False が返され、それ以外の場合は最終的に True が返され、回文数値であることが示されます。
結果は次のように表示されます。