LeetCode每日一题——T7. 整数反转(易):反转字符串

法一:用原数除10取余的方法;
注意:python属于向下取余,即 5 / 2 = 2,而 (-5) / 2 = -3。因此,需要先将原数取绝对值再计算。

class Solution:
    def reverse(self, x: int) -> int:
        x_abs = abs(x)
        num = 0
        err = (2 ** 31) - 1 if x > 0 else 2 ** 31	# 等于	err = (1 << 31) - 1 if x > 0 else 1 << 31
        while x_abs != 0:
            num = num *10 + x_abs % 10
            if num > err:
                return 0
            x_abs //= 10 # 要用地板除法
        return num if x > 0 else -num

法二:反转字符串法:
将原数符号位取出,剩余部分转为字符串,反转字符串,然后再转为整数,乘以符号位输出。

1)直接对字符串元素进行反转:

class Solution:
    def reverse(self, x: int) -> int:
        x_abs = abs(x)
        sign = 1 if x >= 0  else -1
        x_str = str(x_abs)
        x_str_reverse = x_str[::-1]
        x_out = int(x_str_reverse) * sign
        if -2 **31 <= x_out <= 2 ** 31 - 1:
            return x_out
        else:
            return 0

2)借助列表进行反转(速度反而比直接反转快):

class Solution:
    def reverse(self, x: int) -> int:
        x_abs = abs(x)
        sign = 1 if x >= 0  else -1
        x_str = str(x_abs)
        x_list = list(x_str)
        x_list.reverse()
        x_str_reverse = "".join(x_list)
        x_out = int(x_str_reverse) * sign
        if -2 **31 <= x_out <= 2 ** 31 - 1:
            return x_out
        else:
            return 0
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值