题目
LeetCode: Reverse Integer
给定一个 32 位有符号整数,将整数中的数字进行反转。
示例:
输入: 123
输出: 321
思路
这个题比较简单,唯一需要小心的地方就是整型溢出,控制好条件即可
但是自定测试用例的时候他的题有的测试用例还是会出错,比如一串555555555555555555,就那么输出了 - 1。。我的程序不知道为啥也输出的 - 1,算了不管了,这个题简单没什么好讲的
代码
int reverse(int x) {
int max = INT_MAX;
int num = x;
int flag = 1;
if (x < 0)
{
//保持ret为正,所以需要记录符号
flag = -1;
num = -x;
}
int ret = 0;
while (num != 0)
{
if (ret > 0 && max / ret < 10)
{
//先判断ret*10是否会溢出
return 0;
}
ret = ret * 10;
if (max - ret < num % 10)
{
//判断下一个需要加的数加上是否会溢出
return 0;
}
ret += num % 10;
num /= 10;
}
return flag * ret;
}