Easy-09:回文数

回文数

PS:不考虑用数字转字符串的方式

  • 解法一:整数反转,判断是否相等。先得到整数的反转结果,然后判断反转结果是否与整数相等即可。但是,没有考虑溢出问题。
  • 执行用时百分比:81.12%
  • 内存消耗百分比:5.01%
class Solution:
    def isPalindrome(self, x: int) -> bool:
    	# 负数和以 0 结尾的正整数均不是回文数
        if x < 0 or (x != 0 and x % 10 == 0):
            return False
        reversed_target, target = 0, x
        while target:
            reversed_target = reversed_target  *10 + target % 10
            target //= 10
        return reversed_target == x
  • 解法二:反转一半数字。为了解决解法一中的溢出问题,考虑反转数字的一半。
  • 执行用时百分比:97.00%
  • 内存消耗百分比:5.01%
class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x < 0 or (x != 0 and x % 10 == 0):
            return False
        reversed_target = 0
        while x > reversed_target:
            reversed_target = reversed_target * 10 + x % 10
            x //= 10
        # 需要注意处理数字位数为奇数的情况
        return x == reversed_target or x == reversed_target // 10

你可能感兴趣的:(Leetcode,Leetcode)