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