题目描述
给你一个 32 位的有符号整数 x
,返回将 x
中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231,231−1],就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
思路
麻烦之处在于反转之后的值可能溢出,因此在反转的时候可以进行判断,判断在反转下一位之前的值是否大于 INT_MAX/10
或者小于 INT_MIN/10
即可。
C 的代码很简单,每次循环判断即可。
想得太多
在其他语言中,对一个负数取模,它的值仍然是负数。而对于 Python 来说,对它的取模是正数,因此需要我们手动减去相应的值: