Python
 Computer >> コンピューター >  >> プログラミング >> Python

Pythonで整数が回文数(パリンドローム)かどうかを判定する方法

整数が与えられたとき、それが回文数(パリンドローム)であるかどうかを判定する方法を解説します。回文数とは、前から読んでも後ろから読んでも同じ並びになる数値のことです。

例えば「454」は逆順にしても「454」となるため回文数です。一方、「-565」を逆順にすると「565-」となり、マイナス記号の位置が変わるため元の数と一致せず、回文数にはなりません。

解法の考え方

この問題は非常にシンプルに解けます。手順は以下の通りです。

1. 数値をstr()で文字列に変換する
2. Pythonのスライス記法[::-1]を使って文字列を反転させる
3. 元の文字列と反転した文字列を比較し、一致すればTrue、一致しなければFalseを返す

負の数の場合は先頭に「-」が付くため、反転後の文字列とは必ず一致しなくなり、自動的にFalseが返される点にも注目してください。

実装例

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        val = str(x)
        return val == val[::-1]

ob1 = Solution()
print(ob1.isPalindrome(424))
print(ob1.isPalindrome(-565))

入力

x = 424
x = -565

出力

True
False

補足:文字列を使わない方法

文字列変換を使わず、数値を算術的に反転させて判定することも可能です。ただし、Pythonではスライスによる文字列比較が最も簡潔で可読性が高いため、実務やコーディングテストでは上記の方法が広く使われています。計算量は文字列の長さnに対してO(n)であり、非常に効率的です。

  1. Pythonで階乗を計算する3つの方法|forループ・再帰・math.factorial()の使い方

    階乗(factorial)の計算は、データ分析をはじめとする数学的な処理において、Pythonでよく求められる操作の一つです。階乗とは、正の整数 n に対して、1から n までのすべての整数を掛け合わせた値のことです(例:5! = 1 × 2 × 3 × 4 × 5 = 120)。この記事では、Pythonで階乗を求める3つの方法を、コード例と実行結果とともにわかりやすく解説します。方法1:forループを使うforループで1から目的の数値まで順番に処理し、各ステップで掛け算を繰り返していく方法です。以下のプログラムでは、ユーザーに数値の入力を促し、ループ処理の前にint()で入力値を整数に変換

  2. 数値の2進表現が回文かどうかを判定するPythonプログラム

    ここでは、Pythonの組み込み関数を活用して、数値の2進表現が回文(パリンドローム)になっているかどうかを判定します。まず bin() 関数で数値を2進数形式の文字列に変換し、次にその文字列を反転させて元の文字列と比較します。両者が一致すれば回文、一致しなければ回文ではないと判断できます。 実行例 Input: 5 Output: palindrome 解説 数値 5 の2進表現は 101 です。 この文字列を反転しても 101 のままなので、元の文字列と一致します。 したがって、5 は回文であると判定されます。 アルゴリズム Palindromenumber(n) /* n は判定対