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
}

猜你喜欢

转载自blog.csdn.net/dyd961121/article/details/81200357