LeetCode专辑]【6-10题】

来源:互联网 发布:怎么举报网络诈骗 编辑:程序博客网 时间:2024/05/01 03:22

第七题: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;}
原创粉丝点击