LeetCode:Reverse Integer(#7)

Reverse Integer(#7)

编号 名称 等级
7 Reverse Integer Easy

思路

这个题可是满满的坑,测试用例个人感觉给的很好,考虑到了一些临界值的情况,提交了六次才通过,或许是代码很垃圾。其实是个人很垃圾。

主要是判断反转,要求各个数进行反转,这让我想到了之前的字符串反转的试题(Reverse String(#344))。但是这个试题要比之前的考虑的多,因为字符串反转不需要考虑范围,而数字反转就要考虑他的范围。

  1. 判断正负,如果是负数,因为在后面进行绝对值的时候会无法进行正负判断,从而无法获取到正确的结果。
  2. 判断字符取绝对值后是否越界,在这里有个问题 如果使用 Math.abs() 这个方法的话,传入整型则返回整型,如果整型越界,则不变。
  3. 判断翻转后是否越界。

总的来说就这个三个步骤。

代码中的 f 是为了判断是否为负数,将传入的数转化为 long 类型有助于后期,防止 int 越界。

代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
class Solution {
public int reverse(int x) {
boolean f = x < 0;
long a = x;
StringBuilder sb = new StringBuilder();
a = a < 0 ? -a : a;
sb.append(a);
long out = f ? -Long.parseLong(sb.reverse().toString()) : Long.parseLong(sb.reverse().toString());
if (out >= Integer.MAX_VALUE || out <= Integer.MIN_VALUE) {
return 0;
}
return (int) out;
}
}
不介意的话,可以请我喝杯咖啡吗?或扫一扫支付宝领红包