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

京公网安备 11010502036488号