leetcode 8. 字符串转换整数 (atoi)

题目描述:
在这里插入图片描述
在这里插入图片描述
解题方法:
1.使用strip()去掉字符串前后空格
2.判断是否需要对字符串进行遍历
1>字符串为空,直接返回0
2>长度为1,若字符串为非数字,直接返回0,为数字,返回对应数字 使用isdigit()来判断字符是否为数字(是返回True,否为False)
3>长度大于1,首字符为-或+,但第二位不是数字,则返回空,其余情况进行字符串的循环
3.字符串遍历:
1>因为判断字符串是否需要遍历时已经对第一个字符进行了判断,所以遍历从第二个字符开始
2>遍历到的字符为非数字,则终止遍历,此时已找到对应的数据
4.对获取到的所有字符进行处理 即nums
1>首先判断nums是否为空,空则直接返回0
2>得到的字符串的首字符为0且是正整数,则需要进行去0处理
3>将得到的字符串进行转换,转换成数字,接着对数据按题目要求进行输出

关于strip()、isdigit()方法,具体看菜鸟教程,菜鸟教程Python 的字符串内建函数部分

代码:

class Solution(object):
    def myAtoi(self, s):
        """
        :type s: str
        :rtype: int
        """
        nums = ''
        s = s.strip()
        if len(s) == 0:
            return 0
        elif len(s)==1:
            if s[0].isdigit():
                return int(s)
            return 0
        else:
            if (s[0] =='-' or s[0] =='+') and s[1].isdigit():
                nums +=s[0]
            elif s[0].isdigit():
                nums+=s[0]
            else:
                return 0
        for i in range(1,len(s)):
            if s[i].isdigit():
                nums+=s[i]
                continue
            else:
                break  
        if len(nums)<=0:
            return 0
        elif len(nums)==1:
            return int(nums)
        else:
            if nums[0] =='0':
                nums =nums[1:]
            nums = int(nums)
            if nums< pow(-2,31):
                return pow(-2,31)
            elif nums>pow(2,31)-1:
                return pow(2,31)-1
            else:
                return nums

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值