思路:如果是负数的话,先转化为正数,最后出结果的时候再把符号加上去。
代码如下:
class Solution
{
public:
int reverse(int x)
{
int n=0;
bool flag=false;//负数标志位
if(x<0)
{
x=-x;
flag=true;//是负数的话置为true
}
while(x)
{
n=n*10+n%10;
n/=10;
}
n=n*(flag ? -1: 1);//根据flag决定是否加上符号
return n;
}
};
下面的这个我觉得写得更简洁:
class Solution
{
public:
int reverse(int x)
{
int res = 0;
bool flag = x < 0 ? true : false;
x = flag ? -x : x;
while (x > 0) // don't care positive or negetive
{
res = res * 10 + x % 10; // get lowest digit then multi 10
x /= 10;
}
return flag ? -res : res;
}
};