Determine whether an integer is a palindrome. Do this without extra space.
题目大意:输入一个整数,判断其是否为回文数。不能使用额外空间。
解题思路:由于不能使用额外空间,所以不能把整数变成字符串。由于回文数是正着反着都是一样的,所以可以先把一个数倒过来,再看看它是否跟原数相等。注意几点,一个是倒过来之后是否会溢出,第二是小于0的数返回false,第三是个位数都是回文数。
第一步,判断是否小于0,第二步,判断是否个位数,第三步,将原来的数调转顺序,判断是否溢出。第四步,判断调转过来后跟原来的数是否相等。
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
xrev = 0
if (x < 0):
return False
elif (x <=9) and (x >= 0):
return True
else:
y = x
while y > 0:
xrev = xrev * 10 + y % 10
y = y / 10
if x > 2147483647:
return False
if xrev == x:
return True
return False