题目:
官方答案(C++):
class Solution {
public:
int reverse(int x) {
int rev = 0;
while (x != 0) {
int pop = x % 10;
x /= 10;
if (rev > INT_MAX/10 || (rev == INT_MAX / 10 && pop > 7)) return 0;
if (rev < INT_MIN/10 || (rev == INT_MIN / 10 && pop < -8)) return 0;
rev = rev * 10 + pop;
}
return rev;
}
};
结果:
我一开始写的,无法解决溢出问题
class Solution {//无法解决溢出问题
public:
int reverse(int x) {
//bool flag = true;//无需如此
//if (x < 0)
//{
// flag = false;
// x = -x;
//}
int result = 0, tmp = x, tmp_2[10], i = 0;
while (tmp != 0)
{
tmp_2[i++] = tmp % 10;
tmp = tmp / 10;
}
for (int j = 0; i >= 1; j++)
{
result = result + tmp_2[j] * pow(10, --i);
}
//return flag ? result : -result;//无需如此
return result;
}
};