Question

Reverse digits of an integer.

Example1: x = 123, return 321 Example2: x = -123, return -321

Note: The input is assumed to be a 32-bit signed integer. Your function should return 0 when the reversed integer overflows.

Solution

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
int reverse(int x) {
    long res = 0;

    while (x)
    {
        res = res * 10 + x % 10;
        x /= 10;
    }

    return (res > INT_MAX || res < INT_MIN) ? 0 : res;
}

Experience

需要注意的一个地方是,转后的数字可能会比原数字大,所以结果需要用long或者long long保存。