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,肯定不是回文,
本文介绍了一种用于判断整数是否为回文数的有效算法。通过反转整数的后半部分并与前半部分进行比较,可以高效地确定整数是否回文。文章详细解释了算法的工作原理,包括如何处理负数和末尾为零的情况。
1001

被折叠的 条评论
为什么被折叠?



