LeetCode(7)--.反轉整數

不曾走遠~發表於2018-09-14

給定一個 32 位有符號整數,將整數中的數字進行反轉。

示例 1: 輸入: 123 輸出: 321

示例 2: 輸入: -123 輸出: -321

示例 3: 輸入: 120 輸出: 21

假設我們的環境只能儲存 32 位有符號整數,其數值範圍是 [-2^{31},2^{31}-1]。根據這個假設,如果反轉後的整數溢位,則返回 0。


第一種方法:通過取餘操作,來每次獲取最後一個數

class Solution:
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        t = abs(x)
        rev=0
        while t:
            rev = rev*10+t%10
            t= t//10
        if rev>2**31 or -rev<-(2**32):
            return 0
        else:
            if x>=0:
                return rev
            else:
                return -rev

注意:

1)這裡需要注意的一點是:python資料使用前是不用定義資料型別的,所以如果執行x/10操作,就算x是一個整數,返回的也會是一個小數,所以要用到取整函式。

  • -10/3 --->-3.3333333333333335
  • 10/4 --->2.5

2)要注意python中對負數的 % 操作結果。

對於負數取餘會得到一個負的餘數,比如:(-10)%3 直觀來說應該會得到 −1,但是在python中執行後卻得到了2。這點需要注意。

第二種方法:轉成字串後逆序輸出

class Solution:
    def reverse(self, x):
        """
        :type x: int
        :rtype: int
        """
        positive =1
        if x<0:
            x=-x
            positive = -1
        result = int(str(x)[::-1])
        if result>2**31-1 or -result<-2**31:
            return 0
        else:
            return result*positive

 

相關文章