#include <iostream>
#include <climits>
using namespace std;
/*
整数的倒转。
要考虑几个比较特殊的输入:
1.最后一到多位是0.
2.负数
3.倒转之后会溢出,这个每次求和之前判断一次就可以了。
*/
class Solution {
public:
int reverse(int x) {
//这种正数和负数的数字部分处理一样的,符号部分应该要单独处理
bool pos = x >= 0? true : false;
int sum = 0;
int xx = x >= 0? x : -x;
while (xx > 0) {
int bitx = xx % 10;
//一旦溢出就返回0
if (sum > INT_MAX / 10 || (sum == INT_MAX / 10 && bitx > INT_MAX % 10)) {
return 0;
}
sum = sum * 10 + bitx;
xx /= 10;
}
return pos? sum : -sum;
}
};
int main(int argc, const char * argv[]) {
Solution s;
int test = 1534236469;
cout << s.reverse(test) << endl;
cout << INT_MAX << endl;
return 0;
}
leetcode-7-Reverse Integer
最新推荐文章于 2017-09-21 14:34:21 发布