leetcode-7-Reverse Integer

来源:互联网 发布:大嘴猴天鹅绒知乎 编辑:程序博客网 时间:2024/06/06 08:40
#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;}

0 0