原题
判断一个整数是不是回文数。不要使用额外空间。
解题思路
- 首先,根据定义,负数不是回文数
- 把已知数字反转,与原数比较,相等则回文。比如:12321 反转是 12321,12321 == 12321,所以返回True
- 如何获得每一位上的数字
- 12321 % 10 = 1,获得个位数,12321 / 10 = 1232, reverse = 1
- 1232 % 10 = 2, 获得十位数,1232 / 10 = 123,reverse = 1 * 10 + 2
- 123 % 10 = 3, 获得百位数,123 / 10 = 12,reverse = 12 * 10 + 3
- 12 % 10 = 2, 获得千位数,12 / 10 = 1,reverse = 123 * 10 + 2
- 1 % 10 = 1, 获得万位数,1 / 10 = 0,reverse = 1232 * 10 + 1 = 12321
- 以此类推,while循环,0时结束
完整代码
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if x < 0 :
return False
temp = x
revt = 0
while temp:
revt = revt * 10 + temp % 10
temp /= 10
return revt == x