题目描述

Determine whether an integer is a palindrome. Do this without extra space.

判断一个整数是否是回文。本题不允许使用额外空间。

Some hints:
1.如果你在考虑把整数转换为字符串,请注意对额外空间的限制;
2.你也可以反转整数,但是如果你解决过 "Reverse Integer” ,就会知道有可能会溢出。

原文地址

思路方法

最常规的思路就是把整数反转,然后看是否相等。但是整数是否溢出和其是否是回数没有关系。
如果不反转,则可以考虑对比整数前半部分和后部分。注意点有,如果整数末尾有 0 且不为 0,则必然不是回数。

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

        y = 0
        while x > y:
            # y 存放整数后半部分的反转
            y = y*10 + x%10
            # x 存放整数前半部分
            x = x/10

        return x == y or x == (y/10)


↙↙↙阅读原文可查看相关链接,并与作者交流