LeetCode第7题:整数反转
- 题目:给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
- 解法:
class Solution {
public int reverse(int x) {
if( x<10 && x>-10){
return x;
}
int ans=0,a=Math.abs(x);
for(;a>0;){
if(ans>Integer.MAX_VALUE/10 || (ans==Integer.MAX_VALUE/10 && a%10>7))
return 0;
ans=ans*10+a%10;
a=a/10;
}
if(x<0){
ans=0-ans;
}
if(ans>Math.pow(2,31)-1 || ans<0-Math.pow(2,31)){
return 0;
}
return ans;
}
}
整道题的难点在于对溢出的判断,Integer.MAX_VALUE表示为整型的最大值。进行加法计算后随时有可能溢出,所以要先判断再进行运算。我在解法里进行了取绝对值的算法,但其实没有必要。