码迷,mamicode.com
首页 > 其他好文 > 详细

LeetCode #7 Reverse Integer (E)

时间:2015-10-02 01:22:40      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:

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

 

LeetCode #7 Reverse Integer (E)

标签:

原文地址:http://www.cnblogs.com/zhangqieyi/p/4851779.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!