解题思路:先确定输入的符号,然后对其绝对值进行处理。用%10取余得到输入的最后一位同时构造他的镜像数。唯一需要注意的是int型的最大是2147483647,一旦发现镜像数已经大于214748364,就没必要再乘以10了。
解题代码:
class Solution {
public:
int reverse(int x) {
if(x==0) return x;
int sign = x/abs(x);
int sum = 0;
x *= sign;
while(x>0){
sum = 10*sum+x%10;
x /= 10;
if(x>0 && sum>(INT_MAX/10))
return 0;
}
return (sum*sign);
}
};