题目:
Determine whether an integer is a palindrome. Do this without extra space.
Some hints:
Could negative integers be palindromes? (ie, -1)
If you are thinking of converting the integer to string, note the restriction of using extra space.
You could also try reversing an integer. However, if you have solved the problem "Reverse Integer", you know that the reversed integer might overflow. How would you handle such case?
There is a more generic way of solving this problem.
题解:
【数值问题】
主体思路,int的最高最低位取出,并进行比较。
此题,细节较多,需要注意。
例如,while结束的条件并不是x已经只剩个位了,而是k为0的时候(意即check过每一位了0)。
因为100021这样的数字,检查过第一位和最后一位之后,减去这两位,就只剩2了。会被误判为True
Code:
class Solution:
# @return a boolean
def isPalindrome(self, x):
if x < 0:
return False
k = 1
while k * 10 <= x:
k *= 10
while (k > 0) and (x % 10 == x // k) :
x -= x // k * k
x //= 10
k //= 100
if k == 0:
return True
else:
return False