随笔 - 165,  文章 - 0,  评论 - 4,  阅读 - 18023

题目

class Solution {
public:
    int strToInt(string str) {
        if(str.size()==0)return 0;       //空字符串情况
        int cur=0;                       
        while(str[cur]==' ')cur++;       //直接从非空字符开始处理
        bool overflow=false;
        bool minus=false;
        unsigned int ans=0;
        if(str[cur]=='+'){               //字符串首位的'+' '-'分别处理
            cur++;
        }else if(str[cur]=='-'){
            cur++;
            minus=true;
        }
        while(str[cur]>='0'&&str[cur]<='9'){         //1.不需要str[cur]-'0'>=0&&str[cur]-'0'<=9这么麻烦  2.不要漏了等号=
            int temp=str[cur]-'0';
            if((ans>(INT_MAX-temp)/10&&minus==false)||(ans>((unsigned int)INT_MIN-temp)/10&&minus==true)){      //判断是否溢出,从ans*10+temp>INT_MAX变形而来
               overflow=true;
               break; 
            }
            ans=ans*10+temp;           //将字符串转化为整数的公式
            cur++;
        }
        if(overflow==false&&minus==false) return ans;         //包含了字符串首位不合法的情况(即也是overflow==false&&minus==false)
        if(overflow==false&&minus==true) return -ans;
        if(overflow==true&&minus==false) return INT_MAX;
        else return INT_MIN;
    }
};

以上代码转自力扣评论区

posted on   孜孜不倦fly  阅读(5)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示