题目 回文数
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
解答
思路:
回文数的特点很明显,都大于零,且,都是标准的轴对称。那很简单,整个字符串长度除以2就可得对称轴所在位置了。
那我的思路就是 先获取输入数字的长度,判断一下奇偶,再除以2取整得到轴的index,
接着判断,用字符串切片的想法,把轴之前的 和 轴之后 的字符串切出来对比(轴之后的倒序才和轴之前的一样),如果一样,则对称
话不多说,请代码
class Solution:
def isPalindrome(self, x: int) -> bool:
if x>=0:
str1=str(x)
index1=len(str1)//2
if len(str1)%2==0:
if str1[0:index1]==str1[:index1-1:-1]:
return True
else:
return False
else:
if str1[0:index1]==str1[:index1:-1]:
return True
else:
return False
else:
return False
附上通过图
二次更新
男朋友说,直接倒过来不就好了吗!
卧槽 ,对哦 ,
突然好生气
怒更!
更新一下代码:
直接倒过来就好了啊!!为什么还要求对称轴呢!?
啊真是脑子瓦特掉了
class Solution:
def isPalindrome(self, x: int) -> bool:
if x < 0:
return False
else:
y = str(x)[::-1]
if y == str(x):
return True
else:
return False
新的通过图