給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
輸入: 123
輸出: 321
輸入: -123
輸出: -321
輸入: 120
輸出: 21
★ 注意:
假設我們的環境只能儲存得下 32 位的有符號整數
,則其數值範圍為 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0
。思路:
1、對於有符號的整數,嘗試著找出對於正負數的處理異同點:
【 正數:字串的切片 [::-1],可實現反轉。負數:扣除首位字元負號的反轉切片 [:0:-1]或者[:-len(string):-1] 】
2、需要設定在32位的數值範圍內,反轉會溢位的機制
1view codeclass
solution:
2def
intreverse(self, x):
3 str_x =str(x)
4if str_x[0] != '-'
:5 x = int(str_x[::-1])
6else
:7 x = -int(str_x[:0:-1]) #
[i:j:-1], j是取不到的,當i和j不給出時,i代表-1,j代表-len(a)-1,8#
所以str_x[:0:-1]也可以寫成str_x[:len(str_x):-1]910
#數值範圍[-2^31, 2^31-1]————>用二進位制表示:[-(1<<31), (1<<31)-1]
11return x if -(1<<31) < x < (1<<31)-1 else 0
思路:1、對於有符號的整數,嘗試著找出對於正負數的處理異同點:
【 通過絕對值的方式,統一處理數值,以取餘和整除的手段迴圈,達到彈出末位數字的效果,以實現反轉) 】
2、需要設定在32位的數值範圍內,反轉會溢位的機制
1view codeclass
solution:
2def
intreverse(self, x):
3 y, rev =abs(x), 04#
數值範圍[-2^31, 2^31-1]————>用二進位制表示:[-(1<<31), (1<<31)-1]
5 boundary = (1<<31)-1 if x>0 else 1<<31
6while y !=0:
7 rev = rev*10 + y%10
8if rev >boundary:
9return010
else
:11 y //= 10
12return rev if x > 0 else -rev
7 整數反轉
鏈結 給出乙個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。示例 1 輸入 123 輸出 321示例2 輸入 123 輸出 321示例 3 輸入 120 輸出 21注意 假設我們的環境只能儲存得下 32 位的有符號整數,則其數值範圍為 231,231 1 請根據這個假設,如果反轉後...
7 整數反轉
解法一 對輸入數字進行整除和取餘運算,並把輸出值乘以10後與每次取餘的結果相加,直到原資料變為0 每次迴圈,原數對10取餘 結果乘以10,同時原數對10整除。c int reverse int x return rev python def reverse self,x r 0 返回值 flag 1...
7 整數反轉
有些讀者反映我寫的內容太簡單,有時候看不懂思路,我以後會記得寫好思路。一 數值法 1.取出符號位 2.10一次取出x的每一位,再 10變為ans 3.判斷是否超出 output 0if x 0 flag 1else flag 1 x abs x while x 0 res x 10 x int x ...