我的做法:
class Solution {
public:
int reverse(int x) {
int up = pow(2,31) - 1;
char ch;
if(x < 0) ch = '-';
else ch = '+';
vector<int> a;
x = abs(x);
while(x){
a.push_back(x % 10);
x /= 10;
}
int len = a.size();
int res = 0;
int k = 1;
for(int i = len-1; i >= 0; --i){
if(a[i]!=0 && (up - res) / a[i] < k) return 0;
else{
res += a[i] * k;
if(up / 10 < k){
if(i!=0) return 0;
else break;
}
else k *= 10;
}
}
if(res > up && ch == '+') return 0;
else if(res-1 > up && ch == '-') return 0;
else{
if(ch == '-') res*=-1;
}
return res;
}
};
大佬做法:
int reverse(int x)
{
long n = 0;
while (x)
{
n = n * 10 + x % 10;
x /= 10;
}
return n > INT_MAX || n < INT_MIN ? 0 : n;
}