每日一题力扣9回文数

给你一个整数 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处于中位数,不影响回文数
原文地址:https://www.cnblogs.com/liuxiangyan/p/14510451.html