8. String to Integer (atoi) go语言

go语言

func myAtoi(str string) int {
    len_str := strings.Count(str,"") - 1
    var s string = ""
    
    for i := 0;i < len_str ; i++{
        if str[i:i+1] == " " && s == ""{
            continue
        }else if str[i:i+1] == "-"  && s == ""{
            s += "-"
        }else if str[i:i+1] == "+"  && s == ""{
            s += "+"
        }else if str[i:i+1] == "0"  && (s == "+" || s == "-"){
            continue
        }else if str[i:i+1] <= "9" && str[i:i+1] >= "0"{
            s += str[i:i+1]
        }else{
            break
        }
        
    }
    
    var j int = 0
    for i := 0;i < strings.Count(s,"") - 1 ; i++{
        if s[i:i+1] == "0"{
            j++
        }else{
            break
        }
        
    }
    s = s[j:]
    
    if strings.Count(s,"") - 1 > 11 && s[0:1] == "-" {
        return -2147483648
    }else if strings.Count(s,"") - 1 > 11{
        return 2147483647
    }
    
    num,err := strconv.Atoi(s)
    
    if err != nil{
        return num
    }
    if num < -2147483648{
        num = -2147483648
    }else if num > 2147483647{
        num = 2147483647
    }
    
    return num
}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值