Leetcode-007-整数反转

Leetcode-007- 整数反转

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

1
2
3
4
5
6
7
8
9
10
11
12
示例 1:

输入: 123
输出: 321
示例 2:

输入: -123
输出: -321
示例 3:

输入: 120
输出: 21

注意:

假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

思路:进位反转

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
public int reverse(int x) {
// 反转后的结果
int ans = 0;

while (x != 0){
// 拿到每一个个位
int pop = x % 10;

// 溢出处理
// ans * 10 + pop > Integer.MAXVAlUE
// ans * 10 + pop < Integer.MINVALUE
if ((ans > Integer.MAX_VALUE/10)
|| (ans == Integer.MAX_VALUE/10) && pop > 7){
return 0;
}

if ((ans < Integer.MIN_VALUE/10)
|| (ans == Integer.MIN_VALUE/10) && pop < -8){
return 0;
}

ans = ans * 10 + pop;
x /= 10;
}
return ans;
}
打赏
  • 版权声明: 本博客所有文章除特别声明外,均采用 Apache License 2.0 许可协议。转载请注明出处!
  • © 2019-2022 Zhuuu
  • PV: UV:

请我喝杯咖啡吧~

支付宝
微信