首页 > 学院 > 开发设计 > 正文

leetcode 翻转数字

2019-11-06 08:20:37
字体:
来源:转载
供稿:网友
翻转数字,很有意思的一道题。题目如下:Reverse digits of an integer.Example1: x = 123, return 321Example2: x = -123, return -321click to show spoilers.Note:The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.Subscribe to see which companies asked this question.可以看到,题目要求如果翻转之后数字超过32位int范围 需要返回0记得int型的范围是[-2^31,2^31-1],因此Integer.MIN_VALUE如果去掉符号,是超出了范围的。写代码的时候要单独注意一下这个细节。java中常用的取绝对值函数Math.abs(int),如果结果超出int范围,则会返回原始数值,不会进行取绝对值操作。我的代码如下:
public class Solution {    public int reverse(int x){        int flag=0;        if(x==-2147483648){            return 0;        }        if(x<0){            x=-x;            flag=1;        }        String temp1=x+"";        double temp2=0.0;        String temp3="";        Stack<Character> stack=new Stack<>();        char[] charArray=temp1.toCharArray();        for(int i=0;i<charArray.length;i++){            stack.push(charArray[i]);        }        while(!stack.empty()){            temp3+=stack.pop();        }        temp2=Double.parseDouble(temp3);        if(temp2>Integer.MAX_VALUE||temp2<Integer.MIN_VALUE){            return 0;        }        else{            if(flag==0)                return (int)temp2;            else                return -(int)temp2;        }    }}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表