題目:
給出一個 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