2015年6月23日星期二

Reverse Integer leetcode

Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
"越是简单的题目越要注意细节,一般来说整数的处理问题要注意的有两点,一点是符号,另一点是整数越界问题。"
这道题比较简单 但是简单题就是考细节. 注意Integer.MIN_VALUE的绝对值是比Integer.MAX_VALUE大1的,所以经常要单独处理.

public class Solution {
    public int reverse(int x) {
        if (x == Integer.MIN_VALUE) {
            return 0;
        }
        int num = Math.abs(x);
        int res = 0;
        while (num != 0) {
            if (res > (Integer.MAX_VALUE - num % 10) / 10) {
                return 0;
            }//防止res溢出
            res = res * 10 + num % 10;
            num /= 10;
        }
        if (x > 0) {
            return res;
        } else {
            return -res;
        }
    }
}

没有评论:

发表评论