class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
'''
if x<0:
return False
if x==0:
return True
ori=x
sum=0
while ori!=0:
sum=sum*10+ori%10
ori=ori/10
if sum==x:
return True
else:
return False
'''
if x<0:return False
if x==0:return True
if x%10==0:return False
sum=0
while x>sum:
sum=sum*10+x%10
x=x/10
return x==sum or x==sum/10
注意计算回文数的方法: sum=sum*10+x%10
然后既然是计算回文数,那么只比较一半就可以了,并且也需要分奇偶长度,以121为例:
第一次计算:sum=1 x=12
第二次计算:sum=12 x=1
此时已经探索到了x的一半,可以比较sum与x是否相等了,注意奇数长度的回文数中间的数只有一个,所以要sum/10去除掉
当长度为偶数时,以1221为例
第一次计算:sum=1 x=122
第二次计算:sum=12 x=12
不满足x>sum,且x==sum