bool Flag_err=;//判断返回0是因为错误还是真的是0 class Solution {
public:
int myAtoi(string str) {//写的很丑 if (str=="")
return ; long res=;
int flag_sign=;
bool flag_blank=true;//检验空格是否检测完
bool flag_fir=true;//检验第一个值 for (int i=;i<str.size();i++)
{
if(flag_blank && str[i]==' ')
continue; if(flag_fir)//检测第一个值,一旦检测到flag_blank和flag_fir都变假
{
flag_blank=false;
flag_fir=false;
if (str[i]=='-')
{
flag_sign=-;
continue;
}
else if (str[i]=='+')
continue;
else if (str[i]>=''&&str[i]<='')
{
res=res*+flag_sign*(str[i]-'');
Flag_err=;//除非有数字加入才解开flag_err,这也防止出现第一个为加减符号,就认为str是有效输入了
continue;
}
else
return ;
} if(str[i]>='' && str[i]<='')
{
Flag_err=;
res=res*+flag_sign*(str[i]-'');
if(flag_sign== && res>0x7FFFFFFF)
{
res=INT_MAX;
break;
}
if(flag_sign==- && res<(signed int)0x80000000)
{
res=INT_MIN;
break;
}
}
else
break;//一旦发现非数字,就退出 } if (flag_blank)//全部为空格情况
return ; return int(res);
}
};
总结:
这题我在剑指offer书上看过,情况稍微有点不一样,但大部分特殊情况我都还记得(还没超过三天)。。
这题按部就班写没啥,就是编程还是不熟练,且太粗心,还是练得少。