声明
第3题啦~~~感觉这道题和上一题(第2题)思路差不多,最后再加一句return rev_x == x即可
题目
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
eg1.输入-输出:121-True
eg2.输入-输出:-121-False
eg3.输入-输出:10-False
进阶: 你能不将整数转为字符串来解决这个问题吗?
正文
解法1。字符串的一键逆序输出[::-1],和上一题(第2题)逆序输出一样
# V 1.0 能提交
class Solution:
def isPalindrome(self, x):
str_x = str(x)
rev_x = str_x[::-1]
return str_x == rev_x
解法2。 转成字符串,再用下标索引字符串的字符,逐一对比
# V 2.0 能提交
class Solution:
def isPalindrome(self, x):
str_x = str(x)
for i in range(len(str_x)):
if str_x[i] != str_x[-i-1]:
return False
return True
解法3。list的函数reverse,一键完成逆转
# V 3.0 能提交
class Solution:
def isPalindrome(self, x):
str_x = list(str(x))
rev_x = list(str(x))
rev_x.reverse()
if str_x != rev_x:
return False
else:
return True
解法4。处理逻辑和上一题(第2题)求逆序数是一样的,从输入整数最后一位开始取,取完再判断一下和原来的数是否相等
# 进阶,不转成字符串:V 1.0 能提交
class Solution:
def isPalindrome(self, x):
count = 0
num_x = abs(x)
while num_x:
count = count*10 + num_x%10
num_x //= 10
if x < 0:
return False # 负数肯定不是回文数,直接返回False
return x == count