此题思路很简单,但需要注意一些特殊情况,例如空格、数据溢出以及正负数,且需注意,按照C语言的标准是把异常字符起的后面全部截去,保留前面的部分作为结果
代码
class Solution {
public:
int atoi(const char *str) {
int res = 0;
int size = strlen(str);
int sign = 1;
if(size==0)
return res;
int i = 0;
while(i<size&&str[i]==' ')
{
++i;
}
if(str[i]=='+')
++i;
else if(str[i]=='-')
{
sign = -1;
++i;
}
for(; i < size; ++i)
{
if(str[i]==' ')
break;
if(str[i]<'0'||str[i]>'9')
break;
if(INT_MAX/10 < res || INT_MAX/10 == res && INT_MAX%10 < (str[i]-'0'))
{
return sign == -1 ? INT_MIN:INT_MAX;
break;
}
res = res*10 + str[i]-'0';
}
return res*sign;
}
};