分析:就是将数字反转输出,不用考虑前导零。但是要注意!!如果这个结果,注意,是结果,大于2^31-1(INT_MAX)小于-2^31(INT_MIN),应输出0。(就因为这个条件WA了好几次没弄出来。。)
下面是我的代码:
class Solution {
public:
long long reverse(long long x){
long long ans=0,k=1;
if(x<0)
k=-1;
x=(x<0)?-x:x;
while(x>0){
ans*=10;
ans+=(x%10);
x/=10;
}
ans*=k;
if(ans>=INT_MAX || ans<=INT_MIN)
return 0;
return ans;
}
};//Runtime:4ms, Memory Usage:8.2MB
后来改了改,在最开始的时候判断这个数是否是INT_MIN,如果是,那就直接return 0,因为这个不用逆转都知道是超出范围的(但是这个只是极个别情况,只能在刚刚好的情况下快一点。实际上这种判断用处不大,然而这个代码确实比上面那个好一点点点点,就贴出来吧~)。如下:
class Solution {
public:
long long reverse(long long x){
if(x==INT_MIN)
return 0;
long long ans=0,k=1;
if(x<0)
k=-1;
x=(x<0)?-x:x;
while(x>0){
ans*=10;
ans+=(x%10);
x/=10;
}
ans*=k;
if(ans>=INT_MAX || ans<=INT_MIN)
return 0;
return ans;
}
};//Runtime:4ms, Memory Usage:8MB