这道题如果不是会发生溢出,其实可以算上是一道非常简单的题目。根据题目可以很快的写出最基础的代码,如下所示
class Solution {
public:
int reverse(int x) {
int tp = x;
int ans = 0;
while(x != 0){
int y = y % 10 ;
ans = y + ans * 10;
x /= 10;
}
return ans;
};
接下来的事情就是考虑如何解决溢出的问题,也就是捕获溢出异常。在c++里面有定义了INT_MAX和INT_MIN 分别表示最大和最小整数,定义在头文件limits.h中。其中INT_MAX = 2^31-1,INT_MIN= -2^31。所以可以直接得到最后的代码,如下所示:
class Solution {
public:
int reverse(int x) {
long n = 0;
while(x != 0){
n = n * 10 + x % 10;
x /= 10;
}
return n > INT_MAX || n < INT_MIN ? 0 : n;
}
};