LeetCode9 回文数 Python3

1、自己的两个想法

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if(x<0):
            return False
        temp = x
        result=[]

        # 每一位数字存入数组
        while(temp>0):
            k=int(temp%10)
            result.append(k)
            temp=int(temp/10)
        
        relen=len(result)
        start=0
        end=relen
        # 比较
        while(start < end):
            end=relen-start-1
            if(result[start] != result[end]):
                return False
            start=start+1
        return True

数字反转,比较

python不用担心溢出

class Solution:
    def isPalindrome(self, x: int) -> bool:
        if(x<0):
            return False
        temp = x
        result=0

        while(temp>0):
            k=int(temp%10)
            result = result*10+k
            temp=int(temp/10)
        
        if(result == x):
            return True
        else:
            return False

2、python的函数优势

强转str,再倒序,比较

class Solution:
    def isPalindrome(self, x: int) -> bool:
        return str(x) == str(x)[::-1]

3、官方解答

class Solution:
    def isPalindrome(self, x: int) -> bool:
        # 只反转一般数字
        # 这里我本来一直疑惑如何获取整数长度,官方的解题方法是:判断x>reversedNumber
        # 感慨一下别人咋都这么聪明

        if(x<0 or (x%10==0 and x!=0) ):
            return False

        reversedNumber = 0

        while(x > reversedNumber):
            reversedNumber = reversedNumber * 10 + x % 10
            x = int(x / 10)
        
        return (x == reversedNumber or x == int(reversedNumber/10))

猜你喜欢

转载自blog.csdn.net/mxxxkuku/article/details/109249775