Pythonのwhileループを使った回文の判定方法


Pythonで数値の回文を判定するためには、以下のようなシンプルな方法があります。

  1. 数値を文字列に変換します。
  2. 文字列の先頭と末尾の文字を比較します。
  3. 文字が異なる場合は、回文ではないと判定します。
  4. 文字が同じ場合は、次の文字を比較するためにインデックスを調整します。
  5. インデックスを動かすことで、文字列の中央に向かって進みます。
  6. 文字列の中央まで比較が行われた場合、すべての文字が同じであることが確認され、回文であると判定します。

以下は、このアルゴリズムを使ったPythonのコード例です。

def is_palindrome(num):
    num_str = str(num)
    left = 0
    right = len(num_str) - 1
    while left < right:
        if num_str[left] != num_str[right]:
            return False
        left += 1
        right -= 1
    return True
# テスト
print(is_palindrome(12321))  # True
print(is_palindrome(12345))  # False

このコードは、与えられた数値が回文であるかどうかを判定するis_palindrome関数を定義しています。数値を文字列に変換し、左側と右側の文字を比較していきます。異なる文字が見つかった場合はFalseを返し、同じ文字である場合は次の文字を比較するためにインデックスを調整します。左側のインデックスが右側のインデックスを超えた場合は、すべての文字が同じであることが確認され、Trueを返して回文であると判定します。