需要考虑到所有非法情况
如越界,无输出,输入非法,前导空格
class Solution {
public:
/*
*1.前导零 003;
2.前导空格 --3;
3.非法字符 3-3;
*4.多运算符 +-+3,+3;
5.无有效返回值
6.数字越界
*/
int myAtoi(string str) {
long long ans=0;
int flag=1;
bool start=false;
int i;
int n=str.size();
for(i=0;i<n;i++)
{
if(!start&&(str[i]=='-'||str[i]=='+'||isdigit(str[i])))
{
start=true;
if(str[i]=='+')
i++;
else if(str[i]=='-')
{
flag=-1;
i++;
}
bool tag=1;
while(i<n&&isdigit(str[i]))
{
ans=ans*10+str[i]-'0';
i++;
if(flag*ans>=INT_MAX)
{
tag=0;
ans=INT_MAX;
break;
}
else if(flag*ans<=INT_MIN)
{
tag=0;
ans=INT_MIN;
break;
}
}
if(tag)
ans=ans*flag;
}
else if(!start&&str[i]!=' ')
break;
}
return (int)ans;
}
};