leetcode 8: 字符串转整数 (atoi)leetcode 8: 字符串转整数 (atoi)

如果字符串前面有空格,先将空格删除,之后看第一个字符是不是‘+’或‘-’,再对后面的字符取0-9的数

int myAtoi(std::string str) {
    std::cout<<str.size()<<std::endl;
    if(str.size()==0)return 0;
    int j=-1;
    for(int i=0;i<str.size();i++){
        if(str[i]==' ')
            continue;
        else {
            j = i;
            str=str.substr(j);
            break;
        }
    }
    std::cout<<str.size()<<std::endl;
    if(j==-1)return 0;
    int flag=0;
    if(str[0]=='-'){
        flag=1;
        str=str.substr(1);
    }
    else if(str[0]=='+'){
        flag=0;
        str=str.substr(1);
    }
    std::vector<int> a;
    for(int i=0;i<str.size();i++){
        if(str[i]>='0'&&str[i]<='9')
        {
            a.push_back((int)(str[i]-48));
        }
        else
            break;
    }
    if(a.size()==0)return 0;
    long sum=0;
    if(flag==0) {
        for (int i = 0; i < a.size(); i++) {
            sum = sum * 10 + a[i];
            if (sum >= 2147483647)
                return 2147483647;
        }
    }
    if(flag==1) {
        for (int i = 0; i < a.size(); i++) {
            sum = sum * 10 - a[i];
            if (sum <= -2147483648)
                return -2147483648;
        }
    }
    return sum;
}

 

相关文章: