给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
正解:
其实就是,
对于原数x,每次都移除最后一个数a
最后一个数a*10=t
再移除当前最后一个数b
此时回文为t+b,即最后一个数*10+倒数第二个数
然后依次进行
所以要做的事情就是,每次%10取余数得到x的末位数。x//10得到去除末位数后的其余数。x再%10取余得到倒数第二个数,将它和原末位数*10相加
停止就是,当x小于或等于回文的时候
class Solution: def isPalindrome(self, x: int) -> bool: if x < 0 or (x % 10 == 0 and x != 0): return False revertedNumber = 0 while x > revertedNumber:#当x=回文number或者小于回文number的时候,就会停止 revertedNumber = revertedNumber * 10 + x % 10#回文数是最后一个数*10+倒数第二个数 x //= 10#原书每次都去除一个最末尾的数字 return x == revertedNumber or x == revertedNumber //10#有时候131,3处于中位数,不影响回文数