class Solution {
public:
int strToInt(string str) {
bool flg = false;
char sign;
int len = 0;
long long ret = 0;
for(int i = 0; i < str.size(); i++){
if(flg == false){
if(str[i] != ' '){ //第一个非空字符
if(str[i] == '+'){
sign = '+';
}else if(str[i] == '-'){
sign = '-';
}else if(isdigit(str[i])){
ret = str[i] - '0';
}else{//第一个非空字符不是正负号及数字,则转换失败
return 0;
}
flg = true; //之后就不是第一个非空字符了
}
}else if(isdigit(str[i])){
len++;
ret = ret * 10 + str[i] - '0';
if(sign != '-' && ret > INT_MAX) return INT_MAX;
if(sign == '-' && -ret < INT_MIN) return INT_MIN;
}
}
if(len == 0) return 0;
if(sign == '-') ret *= -1;
return ret;
}
};