Leetcode题解
题目:0009回文数
题目描述
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
不将整数转为字符串来解决这个问题
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/palindrome-number/
做题记录
第一次,没注意进阶提示,直接利用字符串完成
class Solution:
def isPalindrome(self, x: int) -> bool:
x = str(x)
if x == x[::-1]:
return True
else:
return False
第二次,放弃字符串方法,继续实验,成功
class Solution:
def isPalindrome(self, x: int) -> bool:
if x<0:
# 首先,负数一定不是回文数
return False
else:
temp = 0
y = x
while x!=0:
pop = x%10
x //= 10
temp = 10 * temp + pop
if temp == y:
return True
第三次,根据官方题解的思路,即反转一半的数字,直接进行判断,利用python实现
class Solution:
def isPalindrome(self, x: int) -> bool:
if x<0 or (x%10 == 0 and x !=0):
return False
else:
temp = 0
while x>temp:
temp = 10 * temp + x%10
x //= 10
return x == temp or x == temp//10
总结
这道题官方给的题解值得学习,忽略字符串解法,本人实现的方法有些多余,只需考虑一半的数字即可达成目标。膜拜一波。