题目:给定一个 32 位有符号整数,将整数中的数字进行反转。
例如:321-->123
-321-->-123
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−231, 231 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
最初我没有头绪,所以我在网上寻找了其他人的答案。
https://blog.csdn.net/m0_37454852/article/details/78148840
我按照这位博主的想法:1.利用输入值x进行(x%10)操作来取个位,在(x/10)操作删去个位,并在下一次循环中((变量*10)+x)来获得结果。
2.利用反推法验证是否溢出(若反推成功则不溢出)
int reverse(int x)
{
int out = 0;
while(x)
{
int temp = out*10 + x%10;
if((temp-x%10)/10) != out)
{
return 0;
}
x = x/10;
out = temp;
}
return out;
}
但这个结果提交后只超越了百分之7的玩家,所以我有思考了一下。
最后我发现判定条件是可以更改了,没必要固定的反推,因为temp会进行/10操作,所以(