leetcode-8 字符串转换整数

思路: 1 首先去除空白符,然后判断字符是否为空,为空(当原字符串是空或者全空格符),返回0

             2若第一个非空字符为+-号:

                                                if只有一个字符 或者 第二个字符不是数字,返回0  (这里逻辑要注意 :这里面or的逻辑是 只有一个字符 or 有2个字符且第二个字符不为数字)

                                                else:遍历字符串,若当前字符是整数,加入res中

                                                            否则跳出循环

                                                 判断res是否在有效数字范围内

             3若第一个数字为数字:判断过程与上面相似

              4若第一个数字既不是+-号也不是数字,返回0

                                                            

class Solution:
    def myAtoi(self, str):
        """
        :type str: str
        :rtype: int
        """
        j=0
        for i in range(len(str)):
            if str[i]==' ':
                j=j+1
            else:
                break
        str=str[j:]
        if str=='':
            return 0
        elif (str[0]=='-') or (str[0]=='+'):
            res=str[0]
            if (len(str)<2 or (str[1] not in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9'])):
                return 0
            else:
                for i in range(1,len(str)):
                    if str[i] not in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
                        break
                    res=res+str[i]
            if (int(res)>=-2147483648)& (int(res)<=2147483647):
                return int(res)
            else:
                if int(res)>0:
                    return 2147483647
                else:
                    return -2147483648
        elif str[0] in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
            res=str[0]
            for i in range(1,len(str)):
                if str[i] not in ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']:
                    break
                res=res+str[i]
            if (int(res)>=-2147483648)& (int(res)<=2147483647):
                return int(res)
            else:
                if int(res)>0:
                    return 2147483647
                else:
                    return -2147483648
        else:
            return 0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值