Reverse Integer(#7)

编号 名称 等级
7 Reverse Integer Easy

思路

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

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

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

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

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

代码

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;
    }
}