整数反转
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
-
处理整数反转: 使用模运算每次得到整数的个位数,然后再将中间结果除以10。这样下一次模运算时就能得到十位数。
-
第一种方法:借助更高位数类型数据保存反转结果,再反转结束后,判断结果是否溢出。
-
在之前的题目要求中并没有限制不能使用更高位数类型中间变量。如果限制,我们只能使用32位整数来进行操作又该如何正确判断溢出呢?
首先,32位能表达的最大整数分别为:2147483647, -2147483648。
-
那么在对反转后结果进行乘以10之前,我们首先判断结果是否会溢出。然后再进行运算,解法如下图所示:
-
尤其要说明的是,我们无需对负数特别处理。负数模运算返回为负值,所以不管正数或负数,都直接循环模运算获取个位数即可。