Leetcode——7.整數反轉(python)

7.整數反轉

給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。

示例 1:

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

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

輸入: 120
輸出: 21
注意:

假設我們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−231,  231 − 1]。請根據這個假設,如果反轉後整數溢出那麼就返回 0。

來源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/reverse-integer
著作權歸領釦網絡所有。商業轉載請聯繫官方授權,非商業轉載請註明出處。

解題思路1:

1.先記錄正負號。

2.然後用數學方法不斷求x的每一位。

3.得到反轉結果,進行溢出判斷。

程序代碼1:

class Solution:
    def reverse(self, x: int) -> int:
        if x != 0:
            symbol = int(abs(x)/x)
            x = abs(x)
            a = 0
            while x >0:
                a = a * 10 + x % 10
                x = x // 10
            if   -2**31 <= a*symbol and  a*symbol <= 2**31-1:
                return a*symbol
            else:
                return 0
        else:
            return 0

s = Solution()
print(s.reverse())

 

解題思路2:

1.先判斷x是不是負數,是負數的話,取絕對值或者切片變爲正數,然後直接切片反轉。

2.判斷反轉後的數字是否溢出。

3.注意int型與str型的轉換

程序代碼2:

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

s = Solution()
print(s.reverse())

 

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