[Leetcode ブラシ問題] アルゴリズム: 回文数

記事ディレクトリ

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 
  1. class Solution:: Solution という名前のクラスを定義します。
  2. def isPalindrome(self, x: int) -> bool:: isPalindrome というメソッドを定義します。このメソッドは整数 x をパラメータとして受け取り、回文かどうかを示すブール値を返します。
  3. if x < 0:: x が負の数の場合、負の数は回文になることができないため、直接 False を返します。
  4. x_str = str(x): 後続の比較のために整数 x を文字列に変換します。
  5. left = 0 および right = len(x_str) - 1: 左ポインターと右ポインターを初期化します。左は文字列の先頭を指し、右は文字列の末尾を指します。
  6. while left < right:: ループに入る場合、ループ条件は、左ポインターが右ポインターより小さいこと、つまり文字列全体が比較されていないことです。
  7. if x_str[left] != x_str[right]:: 左ポインタが指す文字が右ポインタが指す文字と等しくない場合、それは回文ではないことを意味し、直接 False を返します。
  8. left += 1 および right -= 1: 左ポインタを 1 ビット右に、右ポインタを 1 ビット左にそれぞれ移動し、次の文字の比較を続けます。
  9. ループが終了すると、文字列全体の比較が完了し、不一致文字が見つからず、回文であることを示す True が返されます。

このコードは、整数を文字列に変換し、ダブル ポインター方式を使用して文字列の両端から中央までを比較し、回文であるかどうかを判断します。比較中に不等な文字が見つかった場合は直接 False が返され、それ以外の場合は最終的に True が返され、回文数値であることが示されます。

結果は次のように表示されます。

ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/wzk4869/article/details/130733339