LeetCode #7 Reverse Integer (E)

[Problem]

Reverse digits of an integer.

Example1: x = 123, return 321
Example2: x = -123, return -321

 

[Analysis]

这题不难,关键是要注意overflow的处理,因为reverse后的数字有可能超出Integer的范围。有两种思路:一种是利用对10取模的运算,每次将最后一位加入结果并将结果乘10;一种是利用Java StringBuilder的reverse函数以及Integer的parse函数直接将数字转换成字符串并倒转然后转换成整数类型,需要注意负数的处理。

 

[Solution]

public class Solution {
    public int reverse2(int x) {        
        long result = 0;
        while (x != 0) {
            result *= 10;
            result += x % 10;
            x /= 10;
        }
        
        if (result > Integer.MAX_VALUE || result < Integer.MIN_VALUE) {
            return 0;
        } else {
            return (int)result;
        }        
    }        
}
public class Solution {
    public int reverse(int x) {
        if (x == 0) {
            return 0;
        }
        
        if (x % 10 == 0) {
            return reverse(x/10);
        }
                        
        try {
            if (x < 0) {
                return -reverseAbs(-x);
            } else {            
                return reverseAbs(x);
            }
        } catch (Exception e) {
            return 0;
        }
    }
    
    public int reverseAbs(int x) throws Exception{
        String str = String.valueOf(x);
        str = new StringBuilder(str).reverse().toString();
        return Integer.parseInt(str);
    }
}

 

posted on 2015-10-02 00:06  张惬意  阅读(127)  评论(0编辑  收藏  举报