7.整数反转
题目描述
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例1:
输入: 123 输出: 321
示例2:
输入: -123 输出: -321
示例3:
输入: 120 输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
思路
1.可以循环取整数的尾部,然后将其乘上权值后加到一起。
2.可以通过当前总数和当前取出来的尾部来判断数字是否溢出。
Java代码实现
public static int reverse(int x) { int sum = 0; while(x!=0){ int tail = x%10; x = x/10; // if(sum > Integer.MAX_VALUE/10 || (sum == Integer.MAX_VALUE/10 && tail == 7)) return 0; if(sum < Integer.MIN_VALUE/10 || (sum == Integer.MIN_VALUE/10 && tail == -8)) return 0; sum = sum*10 + tail; } return sum; }
Golang代码实现
func reverse(x int) int { res := 0 for x != 0 { tail := x%10 if res > math.MaxInt32/10 || (res == math.MaxInt32/10 && tail > 7) { return 0 } if res < math.MinInt32/10 || (res == math.MinInt32/10 && tail < -8) { return 0 } res = res*10 + tail x = x/10 } return res }