LeetCode https://leetcode.cn/problems/reverse-integer/
题目描述
给你一个32位的有符号整数x,返回将x中的数字部分反转后的结果。
如果反转后整数超过32位的有符号整数的范围−2^31
, 2^31−1
就返回 0。
假设环境不允许存储64位整数(有符号或无符号)。
思路
因为只能使用int, 所以需要提前检查反转后的数字有没有超过32位
int的范围是-2147483648——2147483647
通过循环取模的方式取出数字的每一位, 因为要提前一位检查, 所以实际是检查有没有超过214748364
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| #define INT_LIMIT 214748364 class Solution { public: int reverse(int x) { int result = 0; while (x != 0) { int tmp = x % 10; if (result > INT_LIMIT || (result == INT_LIMIT && tmp > 7) ) return 0; if (result < -INT_LIMIT || result == -INT_LIMIT && tmp < -8) return 0; result = result * 10 + tmp; x /= 10; } return result; } };
|