Return 0 if the result overflows and does not fit in a 32 bit signed integer
Solution:
Time: O(logn) Space: O(1)
public class Solution { public int reverse(int A) { int sign = A >= 0 ? 1 : -1; long reversed = 0; long n = A; if (A < 0) n = -n; while (n > 0) { reversed = reversed * 10 + n % 10; n = n / 10; } if (reversed > Integer.MAX_VALUE || reversed < Integer.MIN_VALUE) return 0; return (int) (sign * reversed); } }
class Solution { public int reverse(int x) { if (x == Integer.MIN_VALUE) return 0; int sign = 1; if (x < 0) sign = -1; x = Math.abs(x); int reversed = 0; while (x > 0) { if (reversed > Integer.MAX_VALUE / 10) { return 0; } int val = x % 10; reversed = reversed * 10 + val; x = x / 10; } return reversed * sign; } }