Python版[leetcode]9. 回文数(难度简单)
判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。
示例 1:
输入: 121
输出: true
示例 2:
输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。
进阶:
你能不将整数转为字符串来解决这个问题吗?
这道题不用进阶解法的确是非常容易解答的,直接转成字符串,然后反转一下判断即可
class Solution: def isPalindrome(self, x: int) -> bool: if x <0: return False x = str(x) return True if x == x[::-1] else False
进阶解法:
def isPalindrome(self, x: int) -> bool: """ 只反转后面一半的数字!!(节省一半的时间) """ if x < 0 or (x!=0 and x%10==0): return False elif x == 0: return True else: reverse_x = 0 while x > reverse_x: remainder = x % 10 reverse_x = reverse_x * 10 + remainder x = x // 10 # 当x为奇数时, 只要满足 reverse_x//10 == x 即可 if reverse_x == x or reverse_x//10 == x: return True else: return False
posted on 2020-02-02 01:19 _david李dvd 阅读(263) 评论(0) 编辑 收藏 举报