【Leetcode7】整数反转

题目描述

在这里插入图片描述
在这里插入图片描述

解题思路

解法一:暴力法

分情况:
1、值只能在[ 2 31 -2^{31} , 2 31 1 2^{31}-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)
发布了56 篇原创文章 · 获赞 1 · 访问量 1679

猜你喜欢

转载自blog.csdn.net/weixin_44549556/article/details/105153600
今日推荐