8.字符串转整数 (atoi)

题目


思路
1.遍历字符串,当字符不符合条件时结束
2.处理特殊情况
3.组合数字
代码

int myAtoi(char* str) {
    
    int str_len = strlen(str);
    int i, flag = 0;
    int result = 0, cur = 0;
    char c;

    for (i = 0; i < str_len; i++) {
        c = str[I];
        //标示符号和是否开始数字
        if (c == '+' && !flag ) { 
            flag = 1;
            continue;
        }   
        else if (c == '-' && !flag) {
            flag = -1; 
            continue;
        }   
        else if (c >= '0' && c <= '9') {
            if (flag != -1)  {
                flag = 1;
            }   
            //记录数字
            cur = result * 10 + (c - '0');
        }
        //处理空格和结束
        else if (c == ' ' && !flag){
            continue;
        }   
        else {
            break;
        }   

        //越界判断
        if ((cur - c + '0') / 10 != result || cur < 0) {
            if (flag == 1) {
                return INT_MAX; 
            }   
            else if (flag == -1) {
                return INT_MIN; 
            }   
        }   
        else  {
            result = cur;
        }   
    
    }
    //负数
    if (flag == -1) {
        result = 0 - result;
    }   
    return result;
}

你可能感兴趣的:(8.字符串转整数 (atoi))