该示例将介绍如何判断回文。
回文指正着读和反着读完全一样的文字或数字。例如:上海自来水来自海上、level、noon
回文数指正着写和反着写相同的整数。例如:121、1331、12321、5、0
回文的特点:
负数一般不是回文数,例如 -121 反过来是 121-
末尾是 0 且数本身不是 0 的数,一定不是回文数,例如 120 → 021=21
示例 1:判断一个字符串是否为回文字符串。
def is_palindrome(num):
# 负数不可能是回文数
if num < 0:
return False
# 把数字转为字符串
s = str(num)
# 字符串反转:[::-1] 表示从后往前取全部字符
reversed_s = s[::-1]
# 判断原字符串和反转后的字符串是否相等
return s == reversed_s
# 测试
print(is_palindrome(121)) # True
print(is_palindrome(-121)) # False
print(is_palindrome(12)) # False
print(is_palindrome(12321)) # True
print(is_palindrome(0)) # True运行结果:
True
False
False
True
True示例 2:判断一个数字是否是回文数
def is_palindrome_math(num):
# 负数不是回文数
if num < 0:
return False
# 末尾为0且不是0本身,不是回文
if num % 10 == 0 and num != 0:
return False
# 用来存储反转后的数字
reversed_num = 0
# 保存原数,避免被修改
original = num
# 逐位反转数字
while num > 0:
# 取最后一位
digit = num % 10
# 拼到反转数后面
reversed_num = reversed_num * 10 + digit
# 去掉最后一位
num = num // 10
# 判断原数和反转数是否相等
return original == reversed_num
# 测试
print(is_palindrome_math(12321)) # True
print(is_palindrome_math(123)) # False
print(is_palindrome_math(0)) # True运行结果:
True
False
True