题目的难点在于溢出条件的判断,所以在对result声明的时候就得用long,而非int
(1)C语言实现
int reverse(int x) {
long result = 0;
int sign = x>0?1:-1;
while(x){
int m = x%10;
result = result*10+m;
x /= 10;
}
return (result>INT_MAX||result<INT_MIN)?0:result;
}
(2)C++实现
class Solution {
public:
int reverse(int x) {
//if(x>INT_MAX||x<INT_MIN)
// return 0;
int sign = x>0?1:-1;
x = abs(x);
long result = 0;
while(x){
int m = x%10;
result = result*10+m;
x /= 10;
}
return (result>INT_MAX||result<INT_MIN)?0:result*sign;
}
};
*/
/*解法二
class Solution {
public:
int reverse(int x) {
long long res = 0;
while(x) {
res = res*10 + x%10;
x /= 10;
}
return (res<INT_MIN || res>INT_MAX) ? 0 : res;
}
};
*/