7 整數反轉

2022-08-26 07:54:09 字數 1474 閱讀 4659

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

輸入: 123

輸出: 321

輸入: -123

輸出: -321

輸入: 120

輸出: 21

★ 注意:

假設我們的環境只能儲存得下 32 位的有符號整數

,則其數值範圍為 [−231,  231 − 1]。請根據這個假設,如果反轉後整數溢位那麼就返回 0

。思路:

1、對於有符號的整數,嘗試著找出對於正負數的處理異同點:

【  正數:字串的切片 [::-1],可實現反轉。負數:扣除首位字元負號的反轉切片 [:0:-1]或者[:-len(string):-1]  】

2、需要設定在32位的數值範圍內,反轉會溢位的機制

1

class

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

view code

思路:1、對於有符號的整數,嘗試著找出對於正負數的處理異同點:

【  通過絕對值的方式,統一處理數值,以取餘和整除的手段迴圈,達到彈出末位數字的效果,以實現反轉)  】

2、需要設定在32位的數值範圍內,反轉會溢位的機制

1

class

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

view code

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 ...