class Solution {
public:
int myAtoi(string s) {
int i=0;
while(s[i]==' '){
i++;
}
if(s.size() == i || (('0'>s[i] || s[i] > '9' )&& s[i] != '+' && s[i] != '-')) return 0;
int flag=1;
if(s[i]=='-'|| s[i] == '+'){
if(s[i]=='-') flag=-1;
i++;
}
long num=0;
while(('0'<=s[i]&&s[i]<= '9')&&i<s.size()){
num=num*10+s[i]-'0';
i++;
if (num > INT_MAX && flag == 1)
return INT_MAX;
if (num >INT_MAX && flag == -1)
return INT_MIN;
}
return num*flag;
}
};
需要注意的几个地方
num = num*10+(str[i]-'0');
'0'<=s[i]&&s[i]<= '9'
中间是&&'0'>s[i] || s[i] > '9'
这个要分开写- if的顺序不能错 要先把num算出来再判断是否出界 因为num是long类型 所以出界了也不会报错