C语言版本:
int myAtoi(char* str) {
int i=0,flag=1;
long long ans=0;
if(str[i]=='\0'||strlen(str)==1&&(!(str[i]<='9'&&str[i]>='0')))//特殊情况
return 0;
while(str[i]==' ')//去除空格
i++;
if(!(str[i]<='9'&&str[i]>='0'||str[i]=='-'||str[i]=='+'))//特殊字符直接结束
return 0;
if(str[i]=='-'||str[i]=='+'){
flag=str[i++]=='-'?0:1;
}//取正负
for(;str[i]!='\0';i++){
if(!(str[i]<='9'&&str[i]>='0'))//特殊字符结束读取
break;
else
if(str[i+1]<='9'&&str[i+1]>='0')//字符串转化为数字
ans=(ans+str[i]-'0')*10;
else
ans+=str[i]-'0';
if(ans>INT_MAX)//溢出检测
return flag>0?INT_MAX:INT_MIN;
}
return flag>0?ans:-ans;
}