1.先判断整数的符号并保存下来 2.取整数的绝对值,方便之后的运算 3.通过取余运算符%取得余数,即当前整数的个位数 3.1 由于整数最高位不能为0,需要判断新的整数是否不为0 4.将取到的余数依次赋值给一个新的数字 5.全部反转后再加上正负号 5.1 判断数字是否在范围之内
只是在解1的基础上加上了 res 取值范围的判断
class Solution: def reverse(self, x): """ :type x: int :rtype: int """ # 判断 x 的正负 if x >= 0: flag = 1 # x 为正 else: flag = 0 # x 为负 # 取x的绝对值 x = abs(x) # 创建一个标志位 i ,保证反转后的数最高为不为 0 i = 0 # 创建一个整数,用于保存和返回结果 res = 0 # 判断 x 是否为 0,判断是否取到了最后一个值 while x != 0: # 取 x 的个位数 y y = x % 10 # 取 x/10 整数部分 x = x // 10 # 判断 y 是否是0(为了防止前n位是0,导致报错) if i == 0: if y == 0: continue # 直接进入下一个循环 else: i = 1 # 确定了最高位不为 0,以后不再判断 y 是否为0,防止误判 # 确定了最高位的数不为 0 res = res * 10 + y # 判断 res 是否是负数 if flag == 0: # 通过flag,res 应该是负数,将 res 取反 res = -res # 判断 res 是否在[−2**31, 2**31 − 1]中 if res >= (-2 ** 31) and res <= (2 ** 31 - 1): # 返回 res return res else: # 返回0 return 0