力扣第八题C++ 字符串转换整数

题目

B站讲的很好的视频

【从零开始刷力扣学C++------第八题:字符串转换整数(atoi)】 https://www.bilibili.com/video/BV1gRN2enEEG/?share_source=copy_web\&vd_source=bb58b6e3e5f53973729fd5b59301b3dd

题解

cpp 复制代码
class Solution {
public:
    int myAtoi(string s) {
        int n = s.size();
        int ans = 0;//存放结果
        int sign = 1;//1为正号,-1为负号
        int i = 0;

        //空格
        while(s[i]==' '){
            i++;
            if(i==n) return 0;
        }//跳过空格

        //符号
        if(s[i] == '-') sign = -1;
        if(s[i] == '-' || s[i] == '+') i++;//跳过符号位

        for(;i<n;i++){
            if(s[i]>'9' || s[i]<'0') break;

            //INT_MAX=2147483647
            //INT_MIN=-2147483648
            if(ans>INT_MAX/10) return INT_MAX;
            else if(ans==INT_MAX/10 && s[i]>'7') return INT_MAX;

            if(ans<INT_MIN/10) return INT_MIN;
            else if(ans==INT_MIN/10 && s[i]>'8') return INT_MIN;

            ans = ans*10 + sign*int(s[i]-'0');
        }
        
        return ans;
    }
};
相关推荐
小则又沐风a几秒前
今日算法----一篇文章学会背包问题
运维·服务器·算法
不会C语言的男孩5 分钟前
C++ Primer 第16章:模板与泛型编程
开发语言·c++
2301_7644413312 分钟前
Factorization Machine(FM模型,因子分解机)
python·算法
QT-Neal15 分钟前
C++智能指针使用详解
开发语言·c++
少许极端25 分钟前
算法奇妙屋(五十二)-备战+复习2
java·算法
luj_176825 分钟前
硝酸核关联假说缺乏实验证据
c语言·开发语言·c++·经验分享·算法
草莓熊Lotso37 分钟前
【Linux网络】深入理解 HTTP 协议(三):静态资源服务、状态码与重定向实战
linux·运维·服务器·网络·c++·http
青梅橘子皮1 小时前
Linux---虚拟地址空间
linux·运维·算法
壹号用户1 小时前
缺省参数和函数重载
c++·学习