Leetcode 7.整数反转

7. 整数反转

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1],就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。

示例 1:
输入:x = 123
输出:321

示例 2:
输入:x = -123
输出:-321

示例 3:
输入:x = 120
输出:21

示例 4:
输入:x = 0
输出:0

class Solution:
    def reverse(self, x: int) -> int:
        x_abs = abs(x)
        n_out = 0
        while x_abs != 0:
            n_out = n_out * 10 + x_abs % 10
            x_abs = x_abs //10
        if n_out < -2 ** 31 or n_out > 2 ** 31 -1:
            return 0
        if x<0:
            n_out = - n_out
        return n_out 
  1. 整数的反转,拿123为例,反转后321,也就是3x100+2x10+1,整数取到每一位的数字方法可以是拿这个整数除以10后的余数,记住要每次更新这个数字x,也就是x = x//10。第一次:123%10=3,第二次:12%10 =2,第三次:1%1 =0。遇到零了循环停止,也就是我们遍历完每一位了。
  2. 得到的每一位数字我们需要把它们组合为一个整数,可以看成
    第一次:0 * 10 + 3 = 3
    第二次:3 * 10 + 2 = 32
    第三次:32 * 10 + 1 = 321
  3. 这里还分了正整数和负整数, trick在于用整数的绝对值做以上的操作,再根据参数x的正负判断我们应该输出正数还是负数。

Note:
-123 / 10 = -13 ······7,余数一定是一个非负数。所以负数的情况要分开,或者先按正数操作再加符号。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容