给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
思路:获取余数再相加。
存在问题:超出Integer范围;
解决方式 :1.使用Long数据类型进行存储,最后返回long.intValue();
2.判断越界的情况
这里主要使用第二种方法解决问题
class Solution {
public int reverse(int x) {
int res = 0;
if (x <= Integer.MIN_VALUE || x >= Integer.MAX_VALUE) {
return res;
}
int remainder =0;
while (x!=0){
remainder = x%10;
x = x/10;
//这里不可以使用res*10+remainder>Integer.MAX_VALUE
//res*10+remainder 和res*10 都可能大于Integer.MAX_VALUE ,是的本该返回0的数据出错
if ((res>0&&res>(Integer.MAX_VALUE-remainder)/10)
||(res<0&&res<(Integer.MIN_VALUE-remainder)/10)){
return 0;
}
res=res*10+remainder;
}
return res;
}
}