回文数

概述:给你一个整数 x ,如果 x 是一个回文整数,返回 true ;否则,返回 false 。

回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

输入:x = 121
输出:true

输入:x = -121
输出:false

输入:x = 10
输出:false

方法一:暴力循环

最简单暴力的办法就是,先将整数转字符串,然后通过循环检索来判断该整数是否为回文数。

# 暴力循环
class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x < 0:
            return False
        str_x = str(x)
        n = len(str_x)
        for i in range(int(n/2)): # 长度折半需取整,则可排除奇偶问题
            if str_x[i] != str_x[-i-1]: # 检索从0开始,逆序检索需-1
                return False
        return True

方法二:检索反转

其次容易想到的是,字符串切片操作,通过字符串反转直接判断该该整数是否为回文数。

# 检索反转
class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x < 0:
            return False
        str_x = str(x)
        reverse_str_x = str_x[::-1]
        if str_x == reverse_str_x:
            return True
        else:
            return False

方法三:数学解法

比较复杂一些的算法是,通过取整和取余操作,来获取整数中对应的数字进行比较。

# 数学解法
class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x < 0:
            return False
        y = 0
        x_check = x
        while x:
            y = y * 10 + x % 10
            x //= 10
        if y == x_check:
            return True
        else:
            return False

总结

你担心你的溢出,我用我的循环!

更多推荐

LeetCode(Python)——回文数(简单)