7. Reverse Integer

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321

Example 2:

Input: -123
Output: -321

Example 3:

Input: 120
Output: 21

Note: Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

在C++裡,負數對正數取modulo還是負的,所以不需要特別考慮正負情形。 e.g. -7 % 3 = -1 because -7 = 3 * (-2) + (-1) 但正數對負數取modulo還是正的。 e.g. 7 % -3 = 1 because 7 = (-3) * (-2) + 1

int reverse(int x) { // time: O(logx); space: O(1)
    long res = 0;
    while (x != 0) {
        res = res * 10 + x % 10;
        x /= 10;
    }
    return (res < INT_MIN || res > INT_MAX) ? 0 : (int)res;
}

Last updated

Was this helpful?