重点是考虑整数溢出的情况:
ans1=ans0*10+temp
不能把运算后的ans1直接与INT_MAX和INT_MIN比较,如果ans1超出数据范围,那么会报错;
但是可以把运算前的ans0与INT_MAX/10或INT_MIN/10比较,若ans0>INT_MAX/10,或ans0<INT_MIN/10则ans1一定会超出数据范围,返回0
class Solution {
public:
int reverse(int x) {
int ans=0;
while(x){
int temp=x%10;
if(ans>INT_MAX/10 || ans<INT_MIN/10){
return 0;
}
ans=ans*10+temp;
x/=10;
}
return ans;
}
};