Python编程题24--回文数

2021-10-31  本文已影响0人  wintests

题目

现在给定一个整数 x ,请判断 x 是否是回文数,如果 x 是一个回文整数,返回 True ;否则,返回 False 。

说明:回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

注意:这里不允许直接使用将整数转换为字符串的方法。

例如:

给定一个整数:121,返回结果:True

给定一个整数:-121,返回结果:False

给定一个整数:123,返回结果:False

实现思路1

例如给定整数 12321 ,按上面思路,得到初始值:reverse_x = 0,tmp = 12321,然后计算如下:

第 1 次循环: 求出个位上的数 12321 % 10 = 1
reverse_x = reverse_x * 10 + 1 = 1
tmp = tmp // 10 = 1232

第 2 次循环: 求出十位上的数 1232 % 10 = 2
reverse_x = reverse_x * 10 + 2 = 12
tmp = tmp // 10 = 123

第 3 次循环: 求出百位上的数 123 % 10 = 3
reverse_x = reverse_x * 10 + 3 = 123
tmp = tmp // 10 = 12

第 4 次循环: 求出千位上的数 12 % 10 = 2
reverse_x = reverse_x * 10 + 2 = 1232
tmp = tmp // 10 = 1

第 5 次循环: 求出万位上的数 1 % 10 = 1
reverse_x = reverse_x * 10 + 1 = 12321
tmp = tmp // 10 = 0

代码实现

def isPalindrome(x):
    if x < 0 or (x != 0 and x % 10 == 0):
        return False
    reverse_x, tmp = 0, x
    while tmp > 0:
        reverse_x = reverse_x * 10 + tmp % 10
        tmp = tmp // 10
    return reverse_x == x

实现思路2

例如 x=12321,那么循环结束后的最终结果为:reverse_x = 123,x = 12,此时判断 reverse_x 整除10 后的值与 x 是否相等;

例如 x=123321,那么循环结束后的最终结果为:reverse_x = 123,x = 123,此时判断 reverse_x 与 x 是否相等 。

代码实现

def isPalindrome(x):
    if x < 0 or (x != 0 and x % 10 == 0):
        return False
    reverse_x = 0
    while x > reverse_x:
        reverse_x = reverse_x * 10 + x % 10
        x = x // 10
    return x == reverse_x or x == reverse_x // 10

更多Python编程题,等你来挑战:Python编程题汇总(持续更新中……)

上一篇 下一篇

猜你喜欢

热点阅读