Leetcode9-回文数-Python实现

30次阅读

共计 655 个字符,预计需要花费 2 分钟才能阅读完成。

  • 题目要求:

  • 思路 1(把 str 转换为 list)

    • 先判断数字是否小于 0,小于 0 返回 False
    • 判断数字是否小于 10,如果小于 10,返回 True,因为个位数是回文数
    • 如果上述两项都不符合,把字符串转换为 list,用双指针遍历数组,一个指针指向 list 头,一个指针指向 list 尾,相向遍历,挨个比对,是否相同,相同则遍历下一个,不同则返回 False,注意这个遍历的范围从 0 到数组的一半即可
  • 思路 2(不把 str 转换为 list)

    • 先判断数字是否小于 0,小于 0 返回 False
    • 判断数字是否小于 10,如果小于 10,返回 True,因为个位数是回文数
    • 如果上述两项都不符合,定义一个 res,使其等于给定的 x,再定义一个 tmp,把 res 的每一位数逆序保存到 tmp 中,最后返回 tmp==x
  • 核心代码:
if x < 0:
    return False
if x < 10:
    return True
res = x
tmp = 0

# 当 res 不为 0 时,说明 res 的每一位还没都保存到 tmp 中,继续循环
while res != 0:
    # 把上一次循环的到的 tmp 乘 10,加上当前的 res 的个位
    tmp = tmp * 10 + res % 10
    # 去掉 res 的个位
    res //= 10
# 循环结束,返回 tmp 是否等于 x
return tmp == x
  • 完整代码:
class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x < 0:
            return False
        if x < 10:
            return True
        res = x
        tmp = 0

        while res != 0:
            tmp = tmp * 10 + res % 10
            res //= 10
        
        return tmp == x

正文完
 0