解法一:字符串反转 将数字转换为字符串,然后将字符串反转,最后判断反转后的字符串是否与原字符串相等。
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