題目:
Determine whether an integer is a palindrome. Do this without extra space.
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