原题目:
给你一个整数
x
,如果x
是一个回文整数,返回true
;否则,返回false
。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
- 例如,
121
是回文,而123
不是。
提示:
-231 <= x <= 231 - 1
进阶:你能不将整数转为字符串来解决这个问题吗?
示例 1:
输入:x = 121 输出:true
示例 2:
输入:x = -121 输出:false 解释:从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入:x = 10 输出:false 解释:从右向左读, 为 01 。因此它不是一个回文数。
分析:
1、直接转换为字符串进行比较
2、特殊值(小于10的数)提前处理,其余值模除累加计算,注意不同语言INT型范围
代码:
Python3版本
"""
版本1
直接转成字符串然后比较
更短的代码写法
return str(x) == str(x)[::-1]
"""
class Solution:
def isPalindrome(self, x: int) -> bool:
s = str(x)
ans = s[::-1]
if s == ans:
return True
else:
return False
"""
版本2
对于小于10的数提前比较判断
其余值进行模除从新组合
其它语言注意超出INT型大小范围
"""
class Solution:
def isPalindrome(self, x: int) -> bool:
if x < 0:
return False
if 0 <= x <= 9:
return True
ans = x
res = 0
while x != 0:
temp = x % 10
res = res * 10 + temp
x = int(x/10)
return ans == res