Free Minecraft premium account upgrade https://freeminecraftgiftcode.net

通过 ​​取模运算​​ ,每次把整数除以10,得到余数
如果 整数x 小于0,或者被10整除,那么说明该整数 x 必然不是回文数
设置数字反转后的值为 reverse_x ,默认为 0 ;设置 tmp=x ,用于取模运算
通过 while 循环,每次循环对 tmp 进行取模运算,结合余数求出每次循环后的倒序结果 reverse_x,最终判断 reverse_x 与 x 是否相等
上面做法是把所有数字都反转,需要循环 n 次
例如给定整数 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
1.
2.
3.
4.
5.
6.
7.
8.


实现思路2
通过 ​​取模运算​​ ,该实现是对上面的方法进行优化
如果 整数x 小于0,或者被10整除,那么说明该整数 x 必然不是回文数
设置数字反转后的值为 reverse_x ,默认为 0
通过 while 循环,每次循环对 x 进行取模运算, 结合余数求出每次循环后的倒序结果 reverse_x,当 x < reverse_x 时,结束循环
最终判断 reverse_x 与 x 是否相等,或者 reverse_x 整除10 后的值与 x 是否相等
上面做法是仅把一半数字都反转,需要循环 n / 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
1.
2.
3.
4.
5.
6.
7.
8.

-----------------------------------
Python编程题24--回文数
https://blog.51cto.com/u_15127532/4518738

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值