C语言 | Leetcode C语言题解之第8题字符串转换整数atoi

题目:

题解:

int myAtoi(char * s){
    int i=0;
    int out=0;
    int pol=1;
    int len=strlen(s);

    if(len==0) return 0;

    while(s[i]==' ') i++;  //删除空格
    if(s[i]=='-'){         //判断正负
        pol=-1;
        i++;
    }
    else if(s[i]=='+'){
        pol=1;
        i++;
    }else{
        pol=1;
    }

    while(s[i]!='\0'){
        if(s[i]<'0'||s[i]>'9'){ //非法字符检查
            i++;
            break;
        }
        if(out>INT_MAX/10) return (pol>0?INT_MAX:INT_MIN);  //越界判断
        if(out==INT_MAX/10){
            if(pol>0&&s[i]>'7') return INT_MAX;
            else if(pol<0&&s[i]>='8') return INT_MIN;
        }
        //下面正常来写应该是out=10*out+(s[i]-'0'),之所以先减去'0',
        //是为了防止10*out+s[i]越界
        out=10*out-'0'+s[i];
        //由于本题没有不允许64位的存储数据,所以非法判断可以更加简单
        //可以直接将out定义为long型,直接判断即可
        //if(pol*out>INT_MAX) return INT_MAX;
        //if(pol*out<INT_MIN) return INT_MIN;
        i++;
    }
    out=out*pol;

    return out;
}

相关推荐

  1. leetCode算法—8. 字符串转换整数 (atoi)

    2024-04-06 20:08:02       51 阅读
  2. Leetcode 8. 字符串转换整数 (atoi)

    2024-04-06 20:08:02       13 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-04-06 20:08:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-04-06 20:08:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-04-06 20:08:02       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-04-06 20:08:02       20 阅读

热门阅读

  1. C++智能指针2——unique_ptr和weak_ptr

    2024-04-06 20:08:02       14 阅读
  2. 【leetcode面试经典150题】14.加油站(C++)

    2024-04-06 20:08:02       14 阅读
  3. Vue3实现图片懒加载

    2024-04-06 20:08:02       16 阅读
  4. leetcode删除有序数组中的重复项

    2024-04-06 20:08:02       15 阅读
  5. 【趣味学算法】13_素数

    2024-04-06 20:08:02       14 阅读
  6. 爬虫 知识点2以及SSL1129错误该怎么解决

    2024-04-06 20:08:02       13 阅读
  7. python项目练习——15.网页爬虫应用程序

    2024-04-06 20:08:02       15 阅读
  8. 开源充电桩设备监控系统技术解决方案

    2024-04-06 20:08:02       13 阅读