题意:
方法:
模拟:

思路:
        
        直接模拟。
        用 flag 判断正负,x 计算数的绝对值。
        最后判断边界:是否大于正数的最大值 or 小于负数的最小值。



class Solution {
public:
    
    int StrToInt(string s) {
        int len=s.size();
        long long x=0;
        int flag=0;//0表示正数,1表示负数
        int f=0;
        int num=0;
        for(int i=0;i<len;i++){
            if(f==0&&s[i]=='+'){//正号
                flag=0;
                num++;
            }else if(f==0&&s[i]=='-'){//负号
                flag=1;
                num++;
            }else if(f==0&&s[i]==' '){//空格
                continue;
            }else if(isdigit(s[i])){//数字
                if(num>1)
                    return 0;
                x=x*10+(s[i]-'0');
                f=1;
                if(x>(1ll<<31))
                    break;
            }else{
                break;
            }
        }
        if(flag==0&&x>(1ll<<31)-1){//大于正数的最大值
            return (1ll<<31)-1;
        }
        if(flag==1&&x>(1ll<<31)){//小于负数的最小值
            return 0-(1ll<<31);
        }
        if(flag==1)//负数
            return 0-x;
        return x;//正数
    }
};

时间复杂度:
空间复杂度: