力扣第八题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;
    }
};
相关推荐
8Qi82 小时前
LeetCode热题100--189
c语言·数据结构·c++·算法·leetcode
melonbo2 小时前
C++ 中用于模块间通信的设计模式
开发语言·c++·设计模式
@––––––2 小时前
力扣hot100—系列9—图论
算法·leetcode·图论
pp起床2 小时前
图论 | part01
算法·深度优先·图论
luckycoding2 小时前
3676. 碗子数组的数目
算法·游戏·深度优先
Qt程序员2 小时前
Linux .so 动态库:底层原理
linux·c++·内核·动态库
灰色小旋风2 小时前
力扣第十题C++正则表达式匹配
c++·leetcode·正则表达式
乌萨奇也要立志学C++2 小时前
【Linux】线程池(一)C++ 手写线程池:基于策略模式实现高性能日志模块
linux·c++·策略模式
I_LPL2 小时前
day50 代码随想录算法训练营 图论专题3
java·算法·深度优先·图论·求职面试