LeetCode 8.8. String to Integer (atoi)(中等、模拟)

题目链接:点击这里
在这里插入图片描述
在这里插入图片描述
测试样例好恶心

会爆掉long long

class Solution {
public:
    int myAtoi(string str) {
        int len = str.length();
        const int intmax = 0x7fffffff;	//2^31-1 = 2147483647 
        const int intmin = 0x80000000;	//-2^31 = -2147483648
        const long long maxx = 0x80000001;
        
        long long ans = 0;
        bool flag = true;   //符号
        int i = 0;
        while(i<len && str[i]==' ') i++;    //跳过空格

        if(i<len && str[i]=='+') {
            i++;
        }
        else if(i<len && str[i]=='-') {
            flag = false;
            i++;
        }

        while(i < len)
        {
            if(str[i]>='0'&&str[i]<='9')
            {
                ans = ans*10 + str[i]-'0';
                if(ans > maxx)  ans = maxx;
            }
            else    //不是数字就跳出循环
                break;
            i++;
        }

        if(!flag)   ans = -ans;
        if(ans>intmax)  ans = intmax;
        if(ans<intmin)  ans = intmin;
        return ans;  
    }
};
发布了671 篇原创文章 · 获赞 102 · 访问量 11万+

猜你喜欢

转载自blog.csdn.net/qq_42815188/article/details/104057448