Palindrome Number

既然是对称数,就说明把各个位上的数反过来也是一样的结果,既然如此,我们把原数的每一位单独拿出来反向再乘回去得到的结果就应该是一样的,另外这里需要注意0位最低位的数不用判断了,负数也不可能,此题没有overflow的考虑,因为overflow的数一样要判对称,下面是代码,如果要继续改进,则可以只拿出x一半的位数来比对

class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if x < 0 or (x % 10 == 0 and x != 0):
            return False

        cur = x
        tmp = 0
        while cur > 0:
            cur, rem = divmod(cur, 10)
            tmp = 10 * tmp + rem

        return tmp == x

results matching ""

    No results matching ""