String to Integer(atoi)

这篇博客介绍了如何将字符串转换为整数,遵循丢弃开头空格、忽略非数字字符以及考虑数值范围的原则。博主提供了详细的解题思路,并在代码中阐述了需要注意的点。
摘要由CSDN通过智能技术生成


tring to Integer (atoi)

题目描述

  给你一个字符串将其转换成整数。首先先丢弃掉开头的空格字符(只能是’ ')直到第一个非空格字符为止。后续不能转换成数字的第一个字符起全部舍弃掉。且如果转换出来的整数超过32位大小的有符号整数范围则返回INT_MAX或INT_MIN.

解题思路

  直接模拟,注意事项较多,在代码里面说明。代码如下。

func myAtoi(str string) int {
	//先去掉头部的空白字符,然后去掉后续空格隔开的字符串
    str = strings.TrimLeft(str, " ")
    str = strings.SplitN(str, " ", 2)[0]
    
    //flag为正负数,max表示是否超出32位范围,hasPlus先前是否已经有符号-+。
    flag := false
    max := false
    hasPlus := false
    res := 0
    
    l:if str == "" {
       return 0 
    }
    
    if str[0] == '-' {
        if hasPlus || flag {
            return 0
        }
        flag = true
        str = str[1:]
        goto l
    }
    
    if str == "" {
       return 0 
    }
    
    if str[0] == '+' {
        if flag || hasPlus {
            return 0
        }
        hasPlus = true
        str = str[1:]
        goto l
    }
    
    for _, v := range str {
        if v >= '0' && v <= '9' {
            res = res*10 + int(v-'0')
            if res > math.MaxInt32 {
                max = true
            }
        }else {
            break
        }
    }
    
    if flag {
        res = -res 
    }
    
    if max && flag {
        return math.MinInt32
    }else if max && !flag{
        return math.MaxInt32
    }
    return res
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值