こちらは「Palindrome Number」のPythonによる解答例となっております。この問題は、与えられた整数が回文数であるかどうかを判定する問題です。
問題
整数が与えられたとき、その整数が回文数であるかどうかを判定します。
- 負の整数は回文数ではありません。
- 12321のような数字は回文数です。
解法
この問題は、整数を文字列に変換し、文字列を反転させて元の文字列と比較する方法で解くことができます。また、整数を反転させる方法もあります。
アルゴリズムの概要を以下に述べます。
- 整数が負の場合、回文数ではないためFalseを返す。
- 整数を文字列に変換する。
- 文字列を反転させる。
- 反転させた文字列と元の文字列を比較する。
- 比較結果がTrueの場合、回文数であるためTrueを返す。
- 比較結果がFalseの場合、回文数ではないためFalseを返す。
Pythonコード
以下のコードが、「Palindrome Number」を解くためのPythonプログラムとなります。
### Function ##################################################################
def solve(num=0):
solver = Solution().isPalindrome
if 1 <= num <= Input().input: id_LIST = [num]
else: id_LIST = [id+1 for id in range(Input().input)]
for id in id_LIST:
data = Input(id)
ans = solver(data.x)
result = "OK" if ans==data.ans else "NG"
print(f"[{str(id).zfill(3)}] {result}")
### Class #####################################################################
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
-2**31 <= x <= 2**31 - 1
:rtype: bool
"""
### Condition: False
if x < 0: return False
### Process: Palindrome
"""
p, res = x, 0
while p:
res = res * 10 + p % 10
p //= 10
"""
res = int(str(x)[::-1])
return res == x
#==============================================================================
class Input:
def __init__(self, num=0):
if num == 1:
self.x = 121
self.ans = True
elif num == 2:
self.x = -121
self.ans = False
elif num == 3:
self.x = 10
self.ans = False
else:
self.input = 3
### Main ######################################################################
if __name__ == "__main__":
solve()
###############################################################################