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;
}
}
运行结果:

本文详细解析了一种用于反转32位有符号整数的算法,通过实例展示输入123输出321,输入-123输出-321的过程。文章深入探讨了正数和负数的处理方式,特别关注了越界检查,确保反转后的结果不会超出int类型的范围。
1526

被折叠的 条评论
为什么被折叠?



