第七题:7. Reverse Integer
思考:32为整形范围是:-2147483648-2147483648
比如:1534236469 翻转一下就溢出了,负数同理。
#include <cstdlib>
#include <cstdio>
#include <vector>
#include <algorithm>
#include <iostream>
#include <cmath>
#include <sstream>
#include <string>
using namespace std;
const int INF = 0x7fffffff;
class Solution {
public:
int reverse(int x) {
if(x > 0) {
string str = int_to_string(x);
std::reverse(str.begin(), str.end());
long long res = string_to_int(str);
if(res > INF) return 0;
return res;
} else {
long long tmp = fabs(x);
string str = int_to_string(tmp);
std::reverse(str.begin(), str.end());
long long res = string_to_int(str);
if(res - 1 > INF) return 0;
return -res;
}
}
string int_to_string(int x) {
ostringstream stream;
stream << x;
return stream.str();
}
long long string_to_int(string str) {
long long sum = 0;
for(int i = 0; i < str.length(); i++) {
sum = sum * 10 + str[i]-'0';
}
return sum;
}
};
int main(int argc, char** argv) {
Solution *obj = new Solution;
int n;
while(cin >> n) {
int res = obj->reverse(n);
cout << res << endl;
}
return 0;
}