整数反转
给你一个 32 位的有符号整数 x ,返回 x 中每位上的数字反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
Solution
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| #include <iostream> using namespace std;
class Solution { public: int reverse(int x) { if (x == 0) { return 0; } int flag = (x < 0) ? -1 : 1; unsigned long long int reverValue = 0; x = abs(x); do { reverValue = reverValue * 10 + (x % 10); if (reverValue != 0 && ((flag > 0 && reverValue > INT_MAX) || (flag < 0 && flag * reverValue < INT_MIN))) { return 0; } x = x / 10; } while (x != 0);
return reverValue * flag; } };
int main() { std::cout << Solution().reverse(123) << std::endl; std::cout << Solution().reverse(-123) << std::endl; std::cout << Solution().reverse(120) << std::endl; std::cout << Solution().reverse(0) << std::endl; std::cout << Solution().reverse(1534236469) << std::endl; std::cout << Solution().reverse(-2147483412) << std::endl; std::cout << Solution().reverse(1463847412) << std::endl; std::cout << Solution().reverse(-1563847412) << std::endl; std::cout << Solution().reverse(-10) << std::endl; return 0; }
|