class Solution {
public:
    int atoi(const char *str) {
        // Start typing your C/C++ solution below
        // DO NOT write int main() function
        int res=0;
        bool s=true;
        int m=0;
        
        while(str[m]==' ')
        m++;
        
        if(str[m]=='+'||str[m]=='-')
        {
            if(str[m]=='-')
            s=false;
            m++;
        }
        
        for(int i=m; i<strlen(str); i++)
        {
            if(str[i]<'0'||str[i]>'9')
            break;
            
            if(INT_MAX/10<res||INT_MAX/10==res&&INT_MAX%10<str[i]-'0')
            {
                return s==false? INT_MIN : INT_MAX;
            }
            
            res=res*10+str[i]-'0';
        }
        return s==false? -res : res;
    }
};