class Solution {
public:
int myAtoi(string s) {
int f=1, i=0;
long w = 0;
int flag = 0;
while(s[i] > '9' || s[i] < '0'){
if(s[i] == '-'){
if(flag == 0){
f *= -1; flag = 1;
}
else return 0;
}
else if(s[i] == '+'){
if(flag == 0) flag = 1;
else return 0;
}
else if(s[i] == ' '){
if(flag == 1) return 0;
}
else return 0;
++i;
}
while(s[i] <= '9' && s[i] >= '0'){
w = w * 10 + s[i] - '0';
++i;
if(w > INT_MAX && f == 1) return INT_MAX;
else if(w - 1 > INT_MAX && f == -1) return INT_MIN;
}
return w*f;
}
};