Assume we are dealing with an environment which could only hold integers within the 32-bit signed integer range. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.
My answer:
int abs(int x)
{
if(x < 0)
{
return -x;
}
else
{
return x;
}
}
int reverse(int x) {
int y,a,b,count,temp;
y = 0;
a = abs(x);
if(a != 0)
{
temp = a;
a = temp / 10;
b = temp % 10;
y = y*10 + b;
}
else
{
if(y >= 0)
{
if(y >= 32767)
{
return 0;
}
else
{
return y;
}
}
else
{
y = -y;
if(y <= -32767)
{
return 0;
}
else
{
return y;
}
}
}
return 0;
}
good answer:
int reverse(int x) {long long val = 0;
do
{
val = val * 10 + x % 10;
x /= 10;
} while (x);
return (val > INT_MAX || val < INT_MIN) ? 0 : val;
}