- 题目描述:
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 示例:
(1).
输入: 121
输出: true
(2).
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
(3).
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:不将整数转为字符串来解决
- 解法一:最简单直接的方法, 字符串反转判断
def isPalindrome(x):
if x > 9:
s = str(x)
if s == s[::-1]:
return True
else:
return False
elif 9 >= x >= 0:
return True
else:
return False
- 解法二:字符串双向队列队列判断。
def isPalindrome(x):
list1 = list(str(x))
while len(list1) > 1:
if list1.pop(0) != list1.pop():
return False
return True
- 解法三:参考LeetCode_7:整数反转(纯计算)。
def isPalindrome(x):
y = 0
if x > 9:
v = x
while v != 0:
a = v % 10
y = y * 10 + a
v = v // 10
if v < 10:
y = y * 10 + v
break
return x == y
elif 9 >= x >= 0:
return True
else:
return False
- 解法四:采用递归方法。参考(链接:https://leetcode-cn.com/problems/palindrome-number/solution/yong-di-gui-de-fang-fa-jie-da-hui-wen-de-wen-ti-by/)
def isPalindrome(x):
s = str(x)
def f(s):
if len(s) == 1 or len(s) == 0:
return True
elif s[0] == s[-1]:
return f(s[1:-1])
else:
return False
return f(s)