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))