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

题目来源

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/reverse-integer

示例1:

输入:123

输出:321

示例2:

输入:-123

输出:-321

示例3:

输入: 120

输出: 21

解题思路

暴力

对于一个有符号整数,我们可以通过先从个位数获取,个位数是反转后的最高位,前面 / 10 , 后面就 * 10 。

7

代码

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
27
28
29
30
31
public class Reverse {


public static void main(String[] args) {
System.out.println(reverse(-230));
}
public static int reverse(int x) {

return reverse(x, 0);
}

public static int reverse(int num, int result) {

if (num == 0) {
return result;
}
int res = num / 10;
int single = num % 10;

// 官方提供的题解中的溢出的处理
if (result > Integer.MAX_VALUE / 10 || (result == Integer.MAX_VALUE / 10 && single > 7)) {
return 0;
}
if (result < Integer.MIN_VALUE / 10 || (result == Integer.MIN_VALUE / 10 && single < -8)) {
return 0;
}
result = result * 10 + single;
return reverse(res, result);
}
}