📜  python中的回文数是什么(1)

📅  最后修改于: 2023-12-03 14:46:40.057000             🧑  作者: Mango

Python中的回文数是什么

回文数是指正序和倒序都相同的数,例如121、12321等。在Python中,判断一个数是否为回文数的方法有很多种。

判断回文数的方法
方法一:字符串反转

将数值转为字符串,再将字符串反转,如果反转后字符串与原字符串相等,那么这个数就是回文数。

def is_palindrome(num):
    str_num = str(num)
    return str_num == str_num[::-1]
方法二:逐位比较法

将数值转为字符串,然后逐位比较其首位、末位、次位、次末位…依次类推,如果在某一步时存在不同,则这个数不是回文数。

def is_palindrome(num):
    str_num = str(num)
    for i in range(len(str_num) // 2):
        if str_num[i] != str_num[-i-1]:
            return False
    return True
方法三:取整数和余数法

将整数的首位和末位取出来,比较它们是否相等,如果不等,则这个数不是回文数。然后将整数去掉首位和末位,继续比较,直到整个数比较完毕。

def is_palindrome(num):
    if num < 0:
        return False
    div = 1
    while num // div >= 10:
        div *= 10
    while num > 0:
        left = num // div
        right = num % 10
        if left != right:
            return False
        num = (num % div) // 10
        div //= 100
    return True
结论

以上三种方法中,字符串反转法最为简单,但是它需要将整个整数转化为字符串,耗费了较多的空间。逐位比较法和取整数和余数法比较相似,它们的时间复杂度都是O(n),但是在Python中,取整数和余数法比字符串反转法更快一些。因此,我们可以使用取整数和余数法来判断一个数是否为回文数。

参考资料:

[1] https://zh.wikipedia.org/wiki/%E5%9B%9E%E6%96%87%E6%95%B0

[2] https://leetcode-cn.com/problems/palindrome-number/solution/hui-wen-shu-by-leetcode-solution/