Basically, after dealing with the negative number issue, mod x by 10, add it to the result number, which is the result number in the previous loop * 10.
Do remember to take care of the overflow problem.
public int reverse(int x) {
if(x > -10 && x < 10)
return x;
boolean isNegative = false;
if(x < 0){
isNegative = true;
x = -x;
}
long num = 0;
while(x > 0){
num = num * 10l + (long)x % 10l;
if(num > Integer.MAX_VALUE)
return 0;
x /= 10;
}
return isNegative ? -(int)num : (int)num;
}
No comments:
Post a Comment