7. 整數反轉

題目:

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

示例 1:spa

輸入: 123
輸出: 321 code

示例 2:blog

輸入: -123
輸出: -321字符串

示例 3:數學

輸入: 120
輸出: 21io

★ 注意:event

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

 

解法:

  • 轉字符串法:
 1 class Solution:
 2     def intReverse(self, x):
 3         str_x = str(x)
 4         if str_x[0] != '-':
 5             x = int(str_x[::-1])
 6         else:
 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]
 9         
10         # 數值範圍[-2^31, 2^31-1]————>用二進制表示:[-(1<<31), (1<<31)-1]
11         return  x if -(1<<31) < x < (1<<31)-1 else 0
View Code
  • 數學法:
 1 class Solution:
 2     def intReverse(self, x):
 3         y, rev = abs(x), 0
 4         # 數值範圍[-2^31, 2^31-1]————>用二進制表示:[-(1<<31), (1<<31)-1]
 5         boundary = (1<<31)-1 if x>0 else 1<<31
 6         while y != 0:
 7             rev = rev*10 + y%10
 8             if rev > boundary:
 9                 return 0
10             else:
11                 y //= 10
12         return rev if x > 0 else -rev
View Code
  • 延伸知識點:
相關文章
相關標籤/搜索