Leetcode刷题记录 · No.7 Reverse Integer
2016-10-13 23:12
302 查看
原题
Reverse digits of an integer.Example1: x = 123, return 321
Example2: x = -123, return -321
注意事项
需要考虑符号需要考虑末位0的数,如100,1200等
需要考虑溢出情况,在本题中如果有溢出返回0
解题思路
取符号,再将原数取绝对值;全程对正数进行处理,最后返回结果时再考虑正负;逐位循环,每次循环中有
res = res * 10 + x % 10;x = x / 10;其中结果用一个long存储,防止溢出的情况。
判断结果是否溢出,返回结果。
总结
这是一个比较简单的题目,只要注意几个细节就OK了。源代码
class Solution { public: int reverse(int x) { int sign; //记录正负 long res = 0; sign = (x > 0) ? 1 : (-1); x = abs(x); while (x) { res = res * 10 + x % 10; x = x / 10; } res = sign * res; if (res > INT32_MAX || res < INT32_MIN)//溢出 { return 0; } return int(res); } };
UPDATE 2016/10/21
有一种更简单的判断溢出的方法,而且不需要定义一个long的变量。代码如下:class Solution { public: int reverse(int x) { if(x == INT32_MIN)//注意INT_MIN的绝对值会出现问题,因为其绝对值大于INT_MAX,所以要对这一特例进行处理 return 0; int sign; //记录正负 int res = 0; sign = (x > 0) ? 1 : (-1); x = abs(x); while (x) { if(res>INT32_MAX / 10 || (res==INT32_MAX/10 && res%10>7)) return 0; res = res * 10 + x % 10; x = x / 10; } return sign*res; } };
相关文章推荐
- 【LeetCode刷题记录】Reverse Integer
- LeetCode No.7 Reverse Integer
- 【LeetCode从零单排】No.7 Reverse Integer
- LeetCode-Reverse Integer
- [Leetcode 14] 7 Reverse Integer
- leetcode: Reverse Integer
- 【leetcode】Reverse Integer
- Leetcode : Reverse Integer
- LeetCode: Reverse Integer
- LeetCode - Reverse Integer
- [leetcode] Reverse Integer
- 【LeetCode with Python】 Reverse Integer
- LeetCode | Reverse Integer
- Leetcode: Reverse Integer
- LeetCode-Reverse Integer
- Leetcode Reverse Integer
- [Leetcode] Reverse Integer
- leetcode 104: Reverse Integer
- [leetcode]Reverse Integer
- LeetCode: Reverse Integer