【LeetCode 9】Palindrome Number(Python)

xiaoxiao2021-02-28  73

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

方法一:

思路:判断输入的数是否大于0,如果不是,直接返回false。否则继续用切片[::-1]输出倒序并判断是否和输入的数一直。如果一直,返回true,否则返回false。缺点:使用了额外空间,不合要求。 优点:简单。代码:(此代码提交不通过,原因↑) 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()))

方法二:

思路:读过官方提示后,我想到了另一种方式,比较头尾是否相等再逐渐往中间推进。优点:符合要求。 缺点:代码量大,且分情况多,要判断奇偶。代码:(可以通过提交)因为比较麻烦,代码就不贴了(主要是我写了半天,一直没有对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
转载请注明原文地址: https://www.6miu.com/read-1000165.html

最新回复(0)