Given a 32-bit signed integer, reverse digits of an integer.
One solution is to convert number to string and then handle trailing 0s. Anyway, here is a solution that uses division and multiplication.
class Solution {
public int reverse(int x) {
if (x == 0) return 0;
boolean isNegative = false;
if (x < 0) {
x = -x;
isNegative = true;
}
int reversed = 0;
int prev_reversed = 0;
while (x > 0) {
reversed = reversed * 10 + x % 10;
if (reversed / 10 != prev_reversed) return 0;
prev_reversed = reversed;
x /= 10;
}
return isNegative ? -reversed : reversed;
}
}