整数反转;link
1.题目分析
1.这个题主要的是溢出处理
2.因为负数范围大1,所以全部转化为负数来处理。
2.示例代码
class Solution {
public:
int reverse(int x) {
bool negative = (x < 0);
x = negative ? x : -x;
if(x == INT_MIN) return 0;
int ret = 0;
while(x){
ret = ret * 10 + x % 10;
x /= 10;
if((ret < INT_MIN / 10 && x) || (ret == INT_MIN / 10 && x < -8))
return 0;
}
if(!negative && ret == INT_MIN)
return 0;
return negative ? ret : -ret;
}
};
另一种使用long long(64位防止溢出的方法)
class Solution {
public:
int reverse(int x) {
long long ret = 0;
while(x){
ret = ret * 10 + x % 10;
x /= 10;
}
return (ret < INT_MIN || ret > INT_MAX) ? 0 : ret;
}
};