题目:
Given a 32-bit signed integer, reverse digits of an integer.
Example 1:
Input: 123 Output: 321
Example 2:
Input: -123 Output: -321
Example 3:
Input: 120 Output: 21
Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−2^31, 2^31 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
描述:
给出一个32位整数,求其翻转之后的结果。
分析:
思路非常简单的一道题,但是有个比较坑的数据.....
对于输入的整数N来说,循环执行的次数是 log10(N),即时间复杂度为O( logN )
比较坑的数据(这个比较极端的数据,也是醉了...):
-2147483648
代码:
class Solution {
public:
int reverse(int x) {
long long result = 0, target = x;
target = x > 0 ? x : -(long long)x;
while (target) {
result *= 10;
result += (target % 10);
target /= 10;
}
result = x > 0 ? result : - result;
if (result > ((long long)1 << 31) - 1 || result < (- ((long long)1 << 31))) {
return 0;
} else {
return result;
}
}
};