判斷一個整數是否是迴文數。迴文數是指正序(從左向右)和倒序(從右向左)讀都是一樣的整數。
示例 1:
輸入: 121
輸出: true
示例 2:
輸入: -121
輸出: false
解釋: 從左向右讀, 爲 -121 。 從右向左讀, 爲 121- 。因此它不是一個迴文數。
示例 3:
輸入: 10
輸出: false
解釋: 從右向左讀, 爲 01 。因此它不是一個迴文數。
不將數字轉換成字符串來解決。
思路:可以將數字分成前後兩部分,後半部分直接取反轉後的數字,將原始數字除以 10,然後給反轉後的數字乘上 10,所以,當原始數字小於反轉後的數字時則意味着已經分成兩部分了。
判斷的時候需要排除一些特殊情況
①末尾爲0的數字,在末尾爲0的數字中,0是迴文數
②當數字個數爲12321時,可能分出來的兩部分爲123和12,這是需要將3去掉後再判斷
class Solution(object):
def isPalindrome(self, x):
"""
:type x: int
:rtype: bool
"""
if x < 0 or (x % 10 == 0 and x != 0):
return False
endpart = 0
while x > endpart:
endpart = endpart * 10 + x % 10
x = x / 10
return x == endpart or x == endpart / 10