7. Reverse Integer
题目描述
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 hold integers within the 32-bit signed integer range. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
题解
Solution1:
Runtime: 12ms
About:
if (temp / 10 != result) {
return 0;
}
For example, if 'b = a * 10' causes overflow,
'b' will be equal to a strange pseudo-random number.
So 'b/10' will not be equal to 'a' anymore.
class Solution {
public:
int reverse(int x) {
int result = 0;
while(x) {
int temp = result * 10 + x % 10;
if (temp / 10 != result) {
return 0;
}
result = temp;
x /= 10;
}
return result;
}
};
Solution2:
Runtime: 16ms
class Solution {
public:
int reverse(int x) {
long long ans = 0;
while (x) {
ans = ans * 10 + x % 10;
x /= 10;
}
return ans < INT_MIN || ans > INT_MAX ? 0 : ans;
}
};