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

思路

这道题如果想用类似于第八题的方法,把每一位的数字都存在一个数组里,显然空间开销会比较大,从而与题意不符。因此,在循环当中,利用数学方法将各位对应数字计算出来,直接进行比较,会显得比较简洁。

需要注意的是,负数不是回文数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if ( x >= 0 ):
digit = 0
i = x
while( i > 0 ):
i = i / 10
digit += 1
high = digit
low = 1
m = x
n = x
while (high >= low):
if (m / (10 ** (high-1)) != n % 10):
return False
m = m - ( (10 ** (high-1)) * (m / (10 ** (high-1))))
n = n / 10
high -= 1
low += 1
return True
else:
return False