Leetcode第七題:整數反轉

題目:

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

示例 1:

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

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

輸入: 120
輸出: 21
注意:

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

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

個人思路:

不停取餘得到每位數字再反過來計算就可以,python甚至不用考慮溢出的問題,比較就完事了~但題目核心思想肯定不想讓人用這麼笨的方法。

官方答案推薦:

就是讓你用這麼笨的方法(也沒啥更好方法)。注意溢出就完事了。非python需要判斷溢出。在反轉過程中大於(負數小於)214748364時即返回0。

python代碼:

class Solution:
    def reverse(self, x: int) -> int:
        flag = 1
        result = 0
        if x<0:
            flag = -1
            x = -x
        while x !=0:
           result = result * 10 + x%10
           x = x // 10

        result = result * flag
        if  -2**31<result  < 2**31-1:
            return result
        else:
            return 0

反思:

python的//爲向下取整,負數需要轉爲正數來操作。

注意:

python 中 -1%10 = 9  , -1//10=-1
java   中 -1%10 = 1  , -1//10=0

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