Saturday, January 25, 2014

Reverse Integer LeetCode

这个题三个地方需要注意,正负,开始为0,以及Overflow.
一般做过atoi,都知道会有正负和overflow,开头为0,我直接写出来的程序已经误打误撞解决了。

Overflow有几种处理方式,第一是throw exception, 第二个是判断边界条件,可以写的很严格,也可以用MAX_VALUE/10.

public int reverse(int x) {
        //正负问题
       boolean negative = x < 0 ? true: false;
       int result = 0;
       int temp = Math.abs(x);
       int rightDigit = 0;
     
       //0开头的问题已经解决了
       while (temp != 0) {
           rightDigit = temp % 10;
           result = result * 10 + rightDigit;
           temp = temp/10;
       }
     
       if (result > Integer.MAX_VALUE) {
           return Integer.MAX_VALUE;
       }
       return negative == true ? result*(-1) : result;
    }

No comments:

Post a Comment