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