题目描述:
回文数是一个非负整数,它的各位数字从高位到低位和从低位到高位的排列是相同的。 以下是一些回文数的例子:
0 ,1 ,33, 525, 7997, 37273
现在给到一个数,求离它最近的一个回文数(离与它的差的绝对值最小)。如果这个数本身就是回 文数,那么就输出它本身。
例:
输入:100 输出:99
输入:530 输出525
题目分析:
通过题目了解到回文数的意义,我们可以选择使用切片的方法完成。
程序首先通过切片的方法将数值进行逆序切片操作,将其反转,比较原始数值的字符串形式与其逆序字符串形式是否相等判断其是否为回文数。
例如,对于数值 12321
,其字符串形式为 '12321'
,逆序字符串形式也为 '12321'
,因此满足条件,可以判断为回文数。
如数值不相等,程序将减小和增大数值,直到找到回文数位置。
python源代码:
def find_nearest_palindrome(number):
# 判断一个数是否为回文数
def is_palindrome(num):
return str(num) == str(num)[::-1]
smaller = number - 1
larger = number + 1
# 减小和增大数值,直到找到回文数
while True:
if is_palindrome(smaller):
return smaller
if is_palindrome(larger):
return larger
smaller -= 1
larger += 1
number = int(input())
np= find_nearest_palindrome(number)
print(np)