LeetCode 第7題 Reverse Integer (easy)——python

 題目來源:

 題目分析:

    本文是給定一個32位的有符號數,讓我們將其逆序輸出。它給定了這樣的幾個例子:

 由它給的例子,我們可以注意到在實現程序時要注意符號位是正常輸出的,此外倒序過來有可能會0來打頭,這個也是不允許的。看到這個題目,我一開始想用reverse()來做,然後一直在考慮怎樣可以省略前面的0,直到參考了其它人的程序才直到本人果然是菜鳥!在實現程序時,知道一下幾點程序就可以順利的寫出了!

  1.reverse函數的使用範圍

     reverse()函數是用於反向列表中的元素,對於其它的對象是不適用的,因此本題最好的方法不是採用reverse()。關於逆序,我們還可以想到切片的方法,可以進行切片的對象是字符串,列表,元組,同樣不包含整數,所以本題我們要注意將整數型數據轉化成字符串類型的數據(str(),int())

   2.關於逆序後多餘0的情況

     由於最後我們在進行逆序操作後,返回值爲整型,因此會有將字符型轉化爲整形的操作,經過編譯,可以發現int()函數自動將前面多餘的0給刪去了,因此不需要考慮如何去除前面的0。

  3.關於32位有符號數的取值範圍

      我在寫程序的時候,將其範圍寫成了-2**31~2**32,結果始終通不過編譯,經查詢才知道其範圍應該是-2**32/2~(2**32)/2-1,這是需要萬分注意的。

 實驗代碼:

  注意了以上幾點後,所寫的代碼如下:
  
class Solution:
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        
        if(x<0):
            y=-1*int((str(-x))[::-1])
        else:
            y=int((str(x))[::-1])
        if (y>(2**32/2-1) or y<(-(2**32/2))):
            y=0
        return (y)

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