判斷一個int型數字是否是回文形式,不許用額外的空間。
注意點:
負數都是不回文數 不許用額外的空間例子:
輸入: x=123
輸出: False
輸入: x=12321
輸出: True
既然是判斷是否是回文數,那就依次獲取數的首尾兩個數判斷是否相等。先通過for循環來獲取數字的最高位,這樣就可以從頭開始獲取每個數字,通過%操作從末尾獲取每個數字。為了方便操作,可以把比較過的數字去除掉。需要注意的是,去掉首尾後,原來的最高位要除以100,而不是10。
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if x < 0:
return False
div = 1
while x / div >= 10:
div *= 10
while x > 0:
l = x // div
r = x % 10
if l != r:
return False
x %= div
x //= 10
div /= 100
return True
if __name__ == "__main__":
assert Solution().isPalindrome(123) == False
assert Solution().isPalindrome(12321) == True
assert Solution().isPalindrome(-121) == False