老卫带你学---leetcode刷题(9. 回文数)

120 篇文章 0 订阅
12 篇文章 0 订阅

问题:

判断一个整数是否是回文数。回文数是指正序(从左向右)和倒序(从右向左)读都是一样的整数。

示例:

示例1:

 输入: 121
 输出: true

示例2:

输入: -121
输出: false
解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。

示例3:

输入: 10
输出: false
解释: 从右向左读, 为 01 。因此它不是一个回文数。

解决:

思想

拿到这种回文数字类别的题目(包括前后数字对比等),我们要充分的想到使用余数这个方便的工具,因为我们可以将每次模10取余得到的数存起来,其存储的顺序就是从后之前的顺序,接着我们在对其进行倍数扩大,与原数进行对比。

python代码:
class Solution:
    def isPalindrome(self, x: int) -> bool:
        if(x==0):
            return True
        if(x<0):
            return False
        if(x%10==0):
            return False
        l=[]
        number=0
        origined=x
        while(x!=0 and int((x/10)+1)!=0):
            i=x%10
            l.append(i)
            x=int(x/10)
        length=len(l)
        for i in range(length):
            number=number+(l[i])*(10**(length-1))
            length-=1
        print(number)
        if int(number)==origined:
            return True
        else:
            return False

解释:前面几次条件判断是考虑几个特殊情况(x为0,负数,10的倍数)。循环条件是对x进行除法运算,如果其值加1等于0代表我们已经到了第一个数字了,注意:在python3中的除号/是会将int型变为float型,也就是我们平常除了多少就是多少,我们需要使用强制转换让其省略小数部分。将所有的与余数保存起来,并且x进行相应的变换。最后在将list中的数倍数扩大,进而与原始的数进行对比

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值