📅  最后修改于: 2023-12-03 15:40:25.433000             🧑  作者: Mango
在数学中,回文数是指正着和倒着读都一样的整数,如121、131、1221都是回文数。本文将介绍如何编写一个程序,以查找给定数字的所有回文数。
def find_palindromes(num):
"""
查找给定数字的所有回文数
"""
num_str = str(num)
n = len(num_str)
palindromes = []
# 处理字符串长度为奇数的情况
if n % 2 == 1:
middle = n // 2
palindrome = num_str[middle]
i = middle - 1
j = middle + 1
while i >= 0 and j < n:
if num_str[i] == num_str[j]:
palindrome = num_str[i] + palindrome + num_str[j]
i -= 1
j += 1
else:
break
palindromes.append(int(palindrome))
# 处理字符串长度为偶数的情况
if n % 2 == 0:
i = n // 2 - 1
j = n // 2
while i >= 0 and j < n:
if num_str[i] == num_str[j]:
palindrome = num_str[i] + num_str[j]
palindrome = num_str[i] + palindrome + num_str[j]
i -= 1
j += 1
else:
break
palindromes.append(int(palindrome))
return palindromes
palindromes = find_palindromes(12321)
print(palindromes) # [12321, 232, 33]
本文介绍了如何编写一个Python函数,以查找给定数字的所有回文数。实现的思路比较简单,只需要分别处理奇数位和偶数位的情况,利用双指针向两侧扩展。注意,当字符串长度为奇数时,中间一位数字必定是回文数。