7. Reverse Integer
给定一个32bit的有符号整型,将它倒序输出
- Example 1
输入:123
输出:321
- Example 2
输入:-123
输出:-321
- Example 3
输入: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();
}