LeetCode(python3) #9 回文数

一.解题思路

思路:主要思路就是通过将数字转化为字符串,然后通过字符串反转与原数字对比即可判断是否为回文数。

进阶:进阶要求是不通过字符串的方式解决,那么可以使用取模运算的方式来反转拼接数字。

二.代码展示

# 字符串反转方式
class Solution:
    # 字符串处理方式
    def isPalindrome(self, x):
        # 首先转换为字符串
        str_x = str(x)
        # 用字符串和反转之后的字符串进行比较即可(str_x[::-1]反转字符串)
        if str_x == str_x[::-1]:
            return True
        else:
            return False
# 数字取模方式
class Solution:
    def isPalindromePush(self, x):
        """
        原理说明:例如判断121是否为回文数则可以通过如下取模方式进行(正确的例子)
                121%10  => 1   拼接得到的结果 x = 1
                12%10   => 2   拼接得到的结果 x = 12
                1%10    => 1   拼接得到的结果 x = 121
                121 = 121 结果正确

                例如判断123是否为回文数则可以通过如下取模方式进行(错误的例子)
                123%10  => 3   拼接得到的结果 x = 3
                12%10   => 2   拼接得到的结果 x = 32
                1%10    => 1   拼接得到的结果 x = 321
                123 != 321 结果错误
        """
        # 根据题目要求负数一定不是回文数
        if x < 0:
            return False

        # 记录取模后剩下的数字
        tmp = x
        # 记录拼接后的数字
        res = 0
        # 循环取模得到反转后的数字
        while tmp > 0:
            # 拼接数字  123举例  (0*10)+(123%10)=3、 (3*10)+(12%10)=32、 (32*10)+(1%10)=321
            res = (res*10) + (tmp % 10)
            # 整数除法  123举例 123//10=12、 12//10=1  1//10=0
            tmp = tmp//10

        # 判断拼接后的是否等于原数字
        if res == x:
            return True
        else:
            return False

三.总结其他

总结:这个题目最简单就是将数字转换为字符串然后进行反转操作即可,若需要满足进阶的话可以通过数字取模的方式进行反转。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值