题目:给你一个整数 x ,如果 x 是一个回文整数,返回 ture ;否则,返回 false 。
回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。例如,121 是回文,而 123 不是。
几乎是遇到最简单的题了,暴力解法很快写出来了
class Solution:
def isPalindrome(self, x: int) -> bool:
str_len = len(str(x))
new_str = ""
for i in range(str_len):
new_str += str(x)[str_len-i-1]
return True if new_str == str(x) else False
之后再看题解,果然需要再深入想:
1、第一点其实很容易想到,所有复数都不是回文,可以直接排除掉;以及除了0以外,所有个位数是0的都可以排除。
2、第二点比较巧妙,回文数可以将数字折成两半来比较。这里再次运用了取模运算,在涉及取出数字中的位数时很好用。
class Solution:
def isPalindrome(self, x: int) -> bool:
if x < 0 or (x % 10 == 0 and x != 0):
return False
revertedNumber = 0
while x > revertedNumber:
revertedNumber = revertedNumber * 10 + x % 10
x //= 10
return x == revertedNumber or x == revertedNumber // 10