Leetcode-9. Palindrome Number(小白也能有所收获)python实现【简单】

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

示例 1:
    输入: 121
    输出: true
示例 2:
    输入: -121
    输出: false
    解释: 从左向右读, 为 -121 。 从右向左读, 为 121- 。因此它不是一个回文数。
示例 3:
    输入: 10
    输出: false
    解释: 从右向左读, 为 01 。因此它不是一个回文数。

进阶:

  • 你能不将整数转为字符串来解决这个问题吗?

👊常规思路:

  • 先将整型转为字符串,根据python中[::-1]获得倒序的字符串,再转为整型。比较原始整数和回文数是否相等即可。

  • 考虑特殊情况

    1. 假如是负数,因为负号的关系,不可能是回文数
    2. 假如输入最后一位有零的情况,包含在正数的情况中了。
class Solution(object):
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if x >= 0:
            reverse_x = int(str(x)[::-1])
            return (x == reverse_x)
        else:
            return False

👍进阶思路:

  • 直接利用整数来进行反转(特殊情况见常规思路)

    • 需要知道:

      1. 整数(x)取余10可以得到整数(x)的最后一位,如201%10=1
      2. 整数(x)整除10可以去除整数(x)的最后一位,如201//10=20(整除的原因去掉了小数0.1)
    • 对于主要代码的理解(假设现在输入是123

      • reverse_x = reverse_x*10 + x%10:就是取出个位,拼接到reverse_x中,如果之后还有要拼接,原来的个位乘以10变成十位,依次类推

      • x //= 10:不断把最后一位数去掉的过程

      在这里插入图片描述

class Solution(object):
    def isPalindrome(self, x):
        if x < 0:   # 负数的情况
            return False
        source_x = x  # 相当于拷贝,后续x会进行一系列变化
        reverse_x = 0
        while x > 0:
            # 循环为了得到倒序
            reverse_x = reverse_x*10 + x%10
            x //= 10
        return source_x == reverse_x
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值