题目:
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。比如321转换为123
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
思路:
用除余运算计算出每一位的值,之后乘10即可得到。需要注意判别条件溢出的条件中,除了最后一次计算前,ans要小于最大整数的1/10,还需要保证在ans等于最大整数1/10时,后面加的数小于7,对负数的检测同理。
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
}
有疑问加站长微信联系(非本文作者)