LeetCode 9 Palindrome Number (easy)——python

 題目來源:

 題目分析:

      本題要我們判斷一個整數是否是迴文數,Do this without extra space.這句,當時我的理解是說在輸入時不要留有空格,因此我寫的程序較爲簡單,沒有判斷溢出等情況,有大神的理解是說不佔用其他空間,因此不能將整數轉化爲其他形式來進行處理,我下面也會進行相應的討論。

 題目解答:

       先附上我寫的代碼,通過了感覺有點神奇,因爲我沒有考慮溢出的情況,要是有大神來解釋一下不勝感激!!!
class Solution:
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if(x>=0):
            if(x==int((str(x))[::-1])):
                return True
            else:
                return False
        else:
            return False
       如果按照不能申請額外空間來做,則可以考慮將int型數據翻轉過來,這是要注意不能超過其溢出範圍(32位)
class Solution:
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if(x<0):
            return False
        else:
            ans=0
            b=x
            while(x>=0):
                ans=ans*10+x%10
                if (ans>2**32/2):
                    return False
                x//=10
            if(b==ans):
                return True
      但是將其寫在網頁中,貌似不能編譯成功,因爲時間複雜度過高。上面的代碼中需要注意的是在python3中,/表示浮點數除法,返回浮點數結果,//表示整數除法,返回整數結果。
       第三種方法有一定的技巧性,思路其實比較容易理解,但就是在寫代碼的判斷條件上需要比較注意,這次碰到了就記住吧,我在寫時真的試了很多次!!!!
       它的思路在於:如果一個數是迴文,那麼我們不用將整個數倒序過來和原來的數進行比較,而是可以取它的後一半與它的前一半來進行比較,這裏就需要注意到數字個數的奇偶問題了,要注意條件的判斷,如果是一致的,則是迴文,如果不一致,則不是迴文。這種方法可以通過編譯。但是這種方法最需要注意的是需要將(x%10==0 and x!=0)這種情況單獨挑出來做判斷,不然就會出錯,切記切記!下面,附代碼:
class Solution:
    def isPalindrome(self, x):
        """
        :type x: int
        :rtype: bool
        """
        if(x<0 or (x%10==0 and x!=0)):
            return False
        else:
            ans=0
            while(x>=ans):
                ans=ans*10+x%10
                if(ans>(2**32/2-1)):
                    return False
                x //= 10

                if(x==ans or x==(ans//10)):#需要考慮到迴文是奇數的情況
                    return True

            else:
                return False
   以上還有一個知識點需要注意:我們觀察到最後一個else沒有相應的if與之對應,這是怎麼回事呢?原來,在python中,else不僅可以與if搭配,還可以和while搭配,同樣還可以與try語句搭配(可省),當try語句出現異常,則進入except語句,否則執行else語句。可見文:

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章