#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。
* 返回倒序结果。