题目链接:7. Reverse Integer
解题思路:
- 首先要知道 int 类型的范围是: -2^31 ~ 2^31 - 1。也就是: -2147483648 ~ +2147483647,超出这个范围可以直接放回 0;
- 后续对数字取绝对值,所以用 flag 来记录这是正数还是负数;
- 在乘以 10 之前先判断会不会溢出了,会的话返回 0;
class Solution {
public:
int reverse(int x) {
int s = 0;
bool flag = false;
int c;
if (x >= 2147483647 || x <= -2147483648)
return 0;
if (x < 0) {
flag = true;
x = abs(x);
}
while(x != 0)
{
if (s >= 214748365)
return 0;
s = s * 10;
c = x % 10;
x = x / 10;
s += c;
}
if (flag)
return s*(-1);
else
return s;
}
};