方法一:将数字转换为字符串
class Solution:
def isPalindrome(self, x: int) -> bool:
x = str(x)
j = len(x) - 1
for i in range(len(x)):
if x[i] != x[j]:
return False
j -= 1
return True
方法二:反转一半数字(进阶)
class Solution:
def isPalindrome(self, x: int) -> bool:
# 方法二:反转一半数字
if x < 0 or ((x % 10 == 0) and x != 0): # 临界情况:1.所有负数都不是回文; 2.个位数上是0的数字(除了0)
return False
original = x
reverse = 0
while reverse < original:
tmp = original % 10
original //= 10
reverse *= 10
reverse += tmp
# print(original, reverse)
if original == reverse:
return True
elif reverse // 10 == original: # 当数字长度为奇数时,我们可以通过 reverse/10 去除处于中位的数字。
return True
else:
return False
个别细节参考了官方题解