LeetCode(9) 整數反轉

題目:

給出一個 32 位的有符號整數,你須要將這個整數中每位上的數字進行反轉。好比321轉換爲123
注意:
假設咱們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−231,  231 − 1]。請根據這個假設,若是反轉後整數溢出那麼就返回 0。spa

思路:

用除餘運算計算出每一位的值,以後乘10便可獲得。須要注意判別條件溢出的條件中,除了最後一次計算前,ans要小於最大整數的1/10,還須要保證在ans等於最大整數1/10時,後面加的數小於7,對負數的檢測同理。code

func reverse(x int) int {
   ans := 0
 y :=0
 for ;x != 0;{
      x,y = x/10,x%10
 if ans > math.MaxInt32/10 || (ans == math.MaxInt32 / 10 && y > 7) {return 0}
      if ans < math.MinInt32/10 || (ans == math.MinInt32 / 10 && y < -8){return 0}
      ans = ans*10 + y
   }
   return ans
}

image.png

相關文章
相關標籤/搜索