LeetCode——整数反转

129 阅读1分钟

1.题目描述

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。

例如:

输入: 123

输出: 321

输入: -123
输出: -321

2.我的思路

class Solution {    public int reverse(int x) {        //判断输入的数字是负数还是正数        if(x==0){            return x;        }        boolean Flag=false;        if(x<0){            Flag=true;        }        StringBuilder result=new StringBuilder();        if(Flag==true){            result.append("-");        }        int m;        while(x!=0){            m=Math.abs(x%10);            String s=String.valueOf(m);            x=x/10;            result.append(s);        }        String str=result.toString();        int num= Integer.parseInt(str);        return num;    }}

我采用的是字符串去添加除10得到的数字,判断正负添加正负号,将字符串转换为整数

出现了溢出,字符串转换之前没有办法检查,选择其他方法写

3.其他人的解决方法

加一步判断,判断最大值和最小值

class Solution {    public int reverse(int x) {        int res=0;        while(x!=0){            int temp=x%10;            if(res > Integer.MAX_VALUE / 10||res==Integer.MAX_VALUE&&temp>7){                return 0;            }            if(res<Integer.MIN_VALUE/10||res==Integer.MIN_VALUE&&temp<-8){                return 0;            }            res=res*10+temp;            x=x/10;        }        return res;    }}