给定一个范围为 32 位 int 的整数,将其颠倒。
例 1:
输入: 123 输出: 321
例 2:
输入: -123 输出: -321
例 3:
输入: 120 输出: 21
注意:
假设我们的环境只能处理 32 位 int 范围内的整数。根据这个假设,如果颠倒后的结果超过这个范围,则返回 0。
class Solution:
def reverse(self, x):"""
:type x: int
:rtype: int
"""
'''
思路一:
将数转为字符串形式进行翻转,翻转后再转回整数形式
注意正负号
32 位 int 范围内的整数判断条件为if x < (1 << 31)-1 and x > -(1 << 31)
'''
x = int(str(x)[::-1]) if x >= 0 else -int(str(-x)[::-1])
return x if x < (1 << 31)-1 and x > -(1 << 31) else 0
'''
思路二:
将题目看作是一个数学问题,不断*10,%10
同样要注意正负号和范围判断
'''
flag = 1
if x < 0:
flag = -1
x = -x
while x > 0:
reverse = x * 10 + x % 10
x = x / 10
x = flag * x
return x if x < (1 << 31)-1 and x > -(1 << 31) else 0