将 32 位有符号整数反转,若反转结果超出范围 [-2^31, 2^31-1]
则返回 0。例如,输入 123
返回 321
,输入 -123
返回 -321
。
%
)和整除(//
)操作。120
需返回 21
,而非 021
。class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
sign = 1 if x > 0 else -1 # 记录符号位
x_abs = abs(x) # 取x的绝对值进行运算
res_abs = 0 # 记录反转后的结果
while x_abs > 0:
digit = x_abs % 10 # 记录个位数
x_abs = x_abs // 10 # 记录去掉最后一位的数
res_abs = res_abs * 10 + digit
# 根据原符号定结果的符号
res = res_abs if sign == 1 else -res_abs
# 结果越界判断
if res >= -2**31 and res <= 2**31 -1:
return res
else:
return 0
123
需 3 次循环)。案例1:
输入:x = 123
输出:321
解释:直接反转,结果在范围内。
案例2:
输入:x = -123
输出:-321
解释:符号保留,绝对值反转。
案例3:
输入:x = 2147483647
输出:0
解释:反转值为 7463847412
,超过正数阈值。