码迷,mamicode.com
首页 > 编程语言 > 详细

Java Integer Addition Subtration Overflow 整数加减溢出

时间:2017-06-27 20:48:32      阅读:160      评论:0      收藏:0      [点我收藏+]

标签:内存   最大值   res   ret   代码   array   ack   中间   span   

leetCode有道题Reverse Integer,因为int的最大值为2的31次方减一,最小值为-2的31次方。

我一开始的代码将res递归加放在try中,以为溢出会有异常,然而并没有。

因为出传入的参数为int类型,且内存和时间要求都能满足,所以long存放中间结果足够了。leet上有个哥们用了一种更机智的溢出检测(自己去看:D)

我的代码:

public class Solution {
    public int reverse(int x) {
        if(x<=9&&x>=-9||x==0){
            return x;
        }
        boolean nagetive=false;
        int y=x;
        if(x<0){
            y=-x;
            nagetive=true;
        }
        ArrayDeque<Integer> s=new ArrayDeque();
        while(y>0){
            s.add(y%10);
            y/=10;
        }
        long res=0L;
        while(s.size()>=1){
            res+=s.poll()*Math.pow(10,s.size());
        }
        if(res>Integer.MAX_VALUE||res<Integer.MIN_VALUE){
            return 0;
        }
        return nagetive?(int)-res:(int)res;
    }
}

 

java 8中有溢出检测的加方法。

Stack Overflow:https://stackoverflow.com/questions/3001836/how-does-java-handle-integer-underflows-and-overflows-and-how-would-you-check-fo

Java Integer Addition Subtration Overflow 整数加减溢出

标签:内存   最大值   res   ret   代码   array   ack   中间   span   

原文地址:http://www.cnblogs.com/chenhuanBlogs/p/7086878.html

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