Easy!
题目描述:给定一个范围为 32 位 int 的整数,将其颠倒。
例1:
输入:132
输出:321
例2:
输入:-123
输出:-321
例3:
输入:120
输出:21
注意:假设我们的环境只能处理 32 位 int 范围内的整数。根据这个假设,如果颠倒后的结果超过这个范围,则返回 0。
解题思路:
翻转数字问题需要注意的就是溢出问题。由于之前的OJ没有对溢出进行测试,所以网上很多人的解法没有处理溢出问题也能通过OJ。现在OJ更新了溢出测试,所以还是要考虑到。为什么会存在溢出问题呢,我们知道int型的数值范围是 -2147483648~2147483647, 那么如果我们要翻转 1000000009 这个在范围内的数得到 9000000001,而翻转后的数就超过了范围。
我最开始的想法是,用long long 型数据,其数值范围为 -9223372036854775808~9223372036854775807, 远大于int型这样就不会出现溢出问题。代码如下:
C++参考答案一:
1 /**2 * Correct but can refactor the code.3 */
4 classSolution {5 public:6 int reverse(intx) {7 long long res = 0;8 bool isPositive = true;9 if (x <