Description:
Given a 32-bit signed integer, reverse digits of an integer.
Example1:
Input: 123
Output: 321
Example2:
Input: -123
Output: -321
Example3:
Input: 120
Output: 21
提交代码:
int reverse(int x) {
//int正数最大2147483647 负数最大-2147483648
int tmp=x,flag;
int i=0,x_reverse=0,len=0;
int nums[10];
//是个正数
if (x > 0)
{
//将这个数存到一个数组里面
while (tmp != 0)
{
nums[i++] = tmp % 10;
tmp /= 10;
len++;
}
//看有没有越界
if (len == 10)
{
if (nums[0] > 2) return 0;
else if (nums[0] == 2)
{
tmp = 0;
for (i = 1; i <len; i++)
tmp = tmp * 10 + nums[i];
if (tmp > 147483647) return 0;
}
}
tmp = 0;
for (i = 0; i <len; i++)
tmp = tmp * 10 + nums[i];
return tmp;
}
//是个负数
else
{
while (tmp != 0)
{
nums[i++] = -1*(tmp % 10);
tmp /= 10;
len++;
}
//看有没有越界
if (len == 10)
{
if (nums[0] > 2) return 0;
else if (nums[0] == 2)
{
tmp = 0;
for (i = 1; i <len; i++)
tmp = tmp * 10 + nums[i];
if (tmp > 147483648) return 0;
}
}
tmp = 0;
for (i = 0; i <len; i++)
tmp = tmp * 10 + nums[i];
return -1 * tmp;
}
}
运行结果: