题目描述![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/8864ab808abf7239a27dda9712876340.png)
比较简单,写了个一重循环就可以解决了
class Solution:
def isPalindrome(self, x: int) -> bool:
x = list(str(x))
y = 2
for i in range(len(x)//2):
if x[i] != x[len(x)-1-i]:
y = 0
break
if y != 0:
y = 1
if y == 1:
return True
if y == 0:
return False
但是我没想到如何y初始化成bool类型的话要怎么做
看了大神的我跪了
class Solution:
def isPalindrome(self, x: int) -> bool:
return str(x) == str(x)[::-1]
还是和昨天那题一样,要学会用 s t r [ : : − 1 ] str[::-1] str[::−1],是真的牛批!
比较硬核的是这个
class Solution:
def isPalindrome(self, x: int) -> bool:
if (x < 0) or (x != 0 and x % 10 == 0):
return False
c = 0
while x > c:
c = c * 10 + x % 10
x //= 10
return x == c or x == c // 10
这个可能要想一想,c用的是算x从后往前逆序数,x则是每次运算都把个位去掉,什么时候x<=c呢?那就是两边的位数要对半开了,如果位数是偶数,先取一个回文数比如1221,那么x=12,c=12,如果不是回文数,比如1234,那么x=12,c=43,也就是说x!=c,如果位数是奇数,先取一个回文数,比如12321,那么x=12,c=123,这样c必定>x,而且要多占了一位所以判断的是x == c // 10,如果不是回文数,比如12345,x=12,c=543,也就是说 x !== c // 10