Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
int reverse(int x) {
//此题需要注意两种情况:1、x取最值,特别是最小值;2、反过来的时候需要防止数据溢出,如果溢出需要将结果置为0
bool pos = x >= 0 ? true : false;
int result = 0, temp = INT_MAX / 10;
if (x != INT_MIN)
{
x = abs(x);
int remain;
while (x)
{
if (result > temp || result < 0)
{
result = 0;
break;
}
else//result会出现两种情况1:result > temp, 则结果一定会溢出,但不一定一定会溢出为负数2:result < temp,result * 10结果加上一个个位数溢出为负数
result = result * 10 + x % 10;
x /= 10;
}
if (!pos)
result = -result;
}
}
int reverse(int x) {
//此题需要注意两种情况:1、x取最值,特别是最小值;2、反过来的时候需要防止数据溢出,如果溢出需要将结果置为0
//方法2:直接用long long数据来做就不用担心数据溢出
long long y = x;
bool pos = y >= 0 ? true : false;
y = abs(y);
long long result = 0;
while (y)
{
result = result * 10 + y % 10;
y /= 10;
}
if (!pos)
result = -result;
return (result > INT_MAX || result < INT_MIN) ? 0 : (int)result ;
}