【LeetCode 9】Palindrome Number(Python)

Determine whether an integer is a palindrome. Do this without extra space.
题目分析:判断输入的一个整数数是否是回文数。不能使用额外空间。
**官方提示:**1、负数没有回文数2、若你想转化为字符串做题,你要考虑到不能用额外空间的限制。3、你也可以反转整数来操作,但要注意翻转后可能会溢出5、0结尾的都不是回文数

方法一:

  1. 思路:判断输入的数是否大于0,如果不是,直接返回false。否则继续用切片[::-1]输出倒序并判断是否和输入的数一直。如果一直,返回true,否则返回false。
  2. 缺点:使用了额外空间,不合要求。 优点:简单。
  3. 代码:(此代码提交不通过,原因↑)
class Solution(object):
    def isPalindrome(self, x):
        if x>0:
            if str(x)==str(x)[::-1]:
                return print("true")
            else:return print("false")
        else:return print("false")
a=Solution()
a.isPalindrome(int(input()))

方法二:

  1. 思路:读过官方提示后,我想到了另一种方式,比较头尾是否相等再逐渐往中间推进。
  2. 优点:符合要求。 缺点:代码量大,且分情况多,要判断奇偶。
  3. 代码:(可以通过提交)
  4. 因为比较麻烦,代码就不贴了(主要是我写了半天,一直没有对O(∩_∩)O),如果哪个大神做对了,希望可以指导指导我。

方法三:
1. 思路:承袭第一种方法的思路。任然反转后判断,但是不改成字符串格式(防止了使用到额外空间)。
2. 优点:代码简单,可以通过。 缺点:不太好理解,所以还是背下来反转用的公式的好。
3. 代码(可以通过提交)

class Solution(object):
    def isPalindrome(self, x):
        if x < 0:
            return False
        tmp = x
        y = 0
        while tmp>0:
            y = y*10 + tmp%10
            tmp = tmp//10  #这两行理解不了就背下来
        return y == x
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值