leetcode 8 字符串转整数

很无语的一道题,感觉很没有意义,个人认为他的这道题描述不清楚,他应该在下图红线框内标注1,2,3,4,5,6顺序执行,我个人理解这个算法只是说了一种规则
在这里插入图片描述
通过代码如下,写的有些乱

class Solution:
    def myAtoi(self, s: str) -> int:
        l_s = len(s)
        _32bmin = -1
        for i in range(31):
            _32bmin*=2
        _32bmax = -_32bmin - 1
        mark = 0
        s_list = list()
        t = 0
        while t < l_s:
            if s[t] == '-' and len(s_list) == 0:
                if mark != 0:
                    break
                mark = -1
            elif s[t] == '+' and len(s_list) == 0:
                if mark !=0:
                    break
                mark = 1
            elif s[t] <= '9' and s[t] >= '0':
                s_list.append(s[t])
            else:
                if s[t] == ' ' and len(s_list)==0 and mark == 0:
                    t+=1
                    continue
                break
                # if mark:
                #     break
                # mark = 0
            t+=1
        if len(s_list) == 0:
            return 0
        else:
            t = 1
            result = 0
            for i in s_list[::-1]:
                result += (t*int(i))
                t*=10
            if result == 0:
                return 0
            else:
                if mark == 1 or mark == 0:
                    if result > _32bmax:
                        return _32bmax
                    else:
                        return result
                elif mark == -1:
                    if result*-1 < _32bmin:
                        return _32bmin
                    else:
                        return result*-1

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值