题目:
解法:
由于超过整数最大或最小值会产生溢出,因此在乘10进位之前判断是否超过最大最小值除以10,同时还需要判断相等的情况,余数是否超过。
class Solution {
public int reverse(int x) {
int reverse = 0;
while(x!=0){
int a = x%10;
if(reverse>Integer.MAX_VALUE/10 || reverse<Integer.MIN_VALUE/10){
return 0;
}
if(reverse==Integer.MAX_VALUE/10 && a>Integer.MAX_VALUE%10){
return 0;
}
if(reverse==Integer.MIN_VALUE/10 && a<Integer.MIN_VALUE%10){
return 0;
}
reverse = reverse * 10 + a;
x = x/10;
}
return reverse;
}
}