leetcode_08. 字符串转换整数 (atoi)

leetcode_08. 字符串转换整数

题目

leetcode题目链接

思路分析

题目要求:抽取字符串前的数字

  1. 一直找到第一个非空字符
  2. 判断提取出来的数字符号
  3. 将数字提取
  4. 判断数字范围
    在提交代码的过程中还会有许多小问题,意义改进即可

代码展示

class Solution:
    def is_number(self,s):      #百度出来的 判断字符是否是数字的函数
        try:
            float(s)
            return True
        except ValueError:
            pass
        try:
            import unicodedata
            unicodedata.numeric(s)
            return True
        except (TypeError, ValueError):
            pass
        return False

    def myAtoi(self, str: str) -> int:      #主函数
        #
        i=0
        while i<len(str) and str[i]==' ':    #找到第一个非空字符
            i+=1
        flag=True
        if i<len(str) and str[i]=='-':      #如果第一个非空字符是‘-’,进行标记False
            i+=1
            if i<len(str) and str[i]=='+':  # 不允许连续出现‘-+’,否则return 0
                return 0
            flag=False
        if i<len(str) and str[i]=='+':      #如果第一个非空字符是‘+’,进行标记
            i+=1
            flag=True
        num=0
        while i<len(str) and self.is_number(str[i]):    #判断当前字符是数字
            num*=10
            num+=int(str[i])
            print(i,num)
            i+=1
        if flag==False:
            num=-num
        if num<=-2**31:
            num=-2**31
        if num>=2**31-1:
            num=2**31-1
        return num

if __name__ == "__main__":
    print("yes1")
    a = Solution()
    print(a.myAtoi("-+1"))
    print("yes2")
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值