题目:
Reverse digits of an integer.
Example1: x = 123, return 321
Example2: x = -123, return -321
我自己的代码,有点混乱而且没有考虑溢出情况,没有AC;
int reverse(int x)
{
int length = 0;
int res[32], result = 0;
int num = x;
if (x<0)
num = -x;
while (num > 0)
{
num /= 10;
length++;
}
int saved;
for (int i = 0; i <length; i++)
{
saved = x;
int e1 = pow(10, i+1);
int e2 = pow(10, i);
res[i] = saved %e1/e2;
result+= res[i] * pow(10, length - i-1);
}
return result;
}
网上的精简AC代码,供学习:
int reverse(int x) {
int result = 0;
int n;
while (x != 0){
n = x % 10;
if (result > INT_MAX / 10 || result < INT_MIN / 10){
return 0;
}
result = result * 10 + n;
x /= 10;
}
return result;
}