LeetCode 7

2018-10-11  本文已影响0人  Junr_0926

7. Reverse Integer

给定一个32bit的有符号整型,将它倒序输出

输入:123
输出:321

输入:-123
输出:-321

输入:120
输出:21

思路

思路很简单,将输入每次除10,得到的商,作为结果的低位数字。问题是如何处理overflow,当overflow发生的时候,会导致最终结果逆向运算后和上一步的结果不一致。

class Solution {
public:
    int reverse(int x) {
        int res = 0;
        int tmp = 0;
        int carry = 0;
        while (x != 0) {
            carry = x % 10;
            tmp = res;
            res = res * 10 + carry;
            x = x / 10;
        }

        if ((res - carry) / 10 != tmp) return 0;
        return res;
    }
};

#include "7.cpp"
#include <iostream>
int main() {
    Solution solver;
    std::cout << solver.reverse(123) << std::endl;
    std::cout << solver.reverse(-123) << std::endl;
    std::cout << solver.reverse(120) << std::endl;
    getchar();
}
image.png
上一篇下一篇

猜你喜欢

热点阅读