本题的难点在于如何处理溢出问题,数学推导过程请看官方题解。
I N T _ M I N INT\_MIN INT_MIN 和 I N T _ M A X INT\_MAX INT_MAX在头文件 l i m i t s . h limits.h limits.h中定义。
I N T _ M I N = − 2147483648 INT\_MIN = -2147483648 INT_MIN=−2147483648, I N T _ M A X = 2147483647 INT\_MAX = 2147483647 INT_MAX=2147483647。
C代码:
int reverse(int x) {
int rev = 0;
while (x != 0) {
// 对int溢出进行判断
if (rev < INT_MIN / 10 || rev > INT_MAX / 10) {
return 0;
}
int digit = x % 10;
x /= 10;
rev = rev * 10 + digit;
}
return rev;
}