解法一:字符串反转 将数字转换为字符串,然后将字符串反转,最后判断反转后的字符串是否与原字符串相等。

def is_palindrome(num):
    # 将数字转换为字符串
    num_str = str(num)
    # 反转字符串
    reversed_str = num_str[::-1]
    # 判断反转后的字符串是否与原字符串相等
    if num_str == reversed_str:
        return True
    else:
        return False

解法二:取余和整除 通过取余和整除操作,逐位比较数字的首尾数字。

def is_palindrome(num):
    # 将数字转换为字符串
    num_str = str(num)
    # 初始化左右指针
    left, right = 0, len(num_str) - 1
    # 比较首尾数字
    while left < right:
        if num_str[left] != num_str[right]:
            return False
        left += 1
        right -= 1
    return True

解法三:数学方法 通过数学计算,将数字反转,并与原数字进行比较。

def is_palindrome(num):
    # 判断特殊情况:负数、以0结尾的非零数都不是回文数
    if num < 0 or (num % 10 == 0 and num != 0):
        return False
    # 初始化反转数字
    reverse_num = 0
    while num > reverse_num:
        # 反转数字
        reverse_num = reverse_num * 10 + num % 10
        # 更新原数字
        num //= 10
    # 判断回文数的长度是奇数还是偶数
    return num == reverse_num or num == reverse_num // 10