题目描述
解题思路
解法一:暴力法
分情况:
1、值只能在[
,
]区间,也就是(-2147483648 ,2147483647),否则返回0
2、值在(-10,10)区间直接返回该数
3、当值前面有负号时,反转时不包括负号反转
python代码
def reverse_force(self, x: int) -> int:
if -10 < x < 10:
return x
str_x = str(x)
if str_x[0] != "-":
str_x = str_x[::-1]
x = int(str_x)
else:
str_x = str_x[:0:-1]
x = int(str_x)
x = -x
return x if -2147483648 < x < 2147483647 else 0
解法二:优化解
先取余,后求商
123——>321
- 先取余得到3,求商得到12
- 3*10+12%10=32 12//10=1
- 32*10+1%10=321 1//10=0
设置符号为sign判断正负号,判断x的值
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
sign = -1 if x<0 else 1
x = abs(x)
ans = 0
while x:
ans = ans * 10 + x % 10 # 求余
print(ans)
x //= 10 # 求商
return sign * ans if ans <= 0x7fffffff else 0
s = Solution()
res = s.reverse(-123)
print(res)