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