#include <climits>
class Solution {
public:
    /**
     * 
     * @param x int整型 
     * @return int整型
     */
    int reverse(int x) {
        if (x == INT_MIN) {
            return 0;
        }
        bool sign = false;
        if (x < 0) {
            x = -x;
            sign = true;
        }
        int res = 0;
        while (x) {
            int tmp = x % 10;
            if (res > 214748364 || (res == 214748364 && (tmp + sign > 8))) {
                return 0;
            }
            res = res * 10 + tmp;
            x /= 10;
        }
        return sign ? -res: res;
    }
};

思路:模拟。

因为不能用long long:

* 如果x为INT_MIN,需要特殊处理。

* 记录x的符号,将x转成正数统一处理。

* 模拟倒序。

* 如果即将溢出,判断溢出条件,如果确实溢出了则返回0。

* 返回倒序结果。