判断一个整数是否是回文,不用额外空间
class Solution: def isPalindrome(self, x): """ :type x: int :rtype: bool """ if x < 0 or (x % 10 == 0 and x != 0): return False revx = 0 while(x > revx): revx = revx * 10 + x % 10 x = int(x/10) return x == revx or x == int(revx/10)
如上,思路就是,负数不是回文,然后计算数字后半部分的反转数,当数字大于反转数时,停止,最后计算前半部分与翻转后的是否相待,最后的or后面,是因为
如果x的位数是奇数,那么需要把反转后的数也除以10,再比较,比如121,计算到最后,x=1, revx=12,显示那个2是中间的数字,另外,
if x < 0 or (x % 10 == 0 and x != 0):这里or后面,是因为如果x是10,100,1000,这样的数,计算到最后x=0, revx=1,这样结果反而是true,而这样的数字,
由于最后一位是0,首位非0,肯定不是回文,