int myAtoi(char* str)
{
char *s = str;
while (*s && isspace(*s))
s++;
//去除空格
int n = 0;
if (*s)
{
int sign = 1;
if (*s == '+')
s++;
else if (*s == '-')
{
sign = -1;
s++;
}
while (*s && isdigit(*s))
{
int oldn = n;
n = n*10 + *s++ - '0';
if (n/10 != oldn)
{ /* integer too large or too small */
if (sign < 0)
return INT_MIN;
else
return INT_MAX;
}
}
n *= sign;
}
return n;
{
char *s = str;
while (*s && isspace(*s))
s++;
//去除空格
int n = 0;
if (*s)
{
int sign = 1;
if (*s == '+')
s++;
else if (*s == '-')
{
sign = -1;
s++;
}
while (*s && isdigit(*s))
{
int oldn = n;
n = n*10 + *s++ - '0';
if (n/10 != oldn)
{ /* integer too large or too small */
if (sign < 0)
return INT_MIN;
else
return INT_MAX;
}
}
n *= sign;
}
return n;
}
主要考虑4个方面:
1. 前面的空格
2. 除去前面的空格后,可以以“+、-”开头,需要做对应的处理
3. 除了起始处可以出现前2种情况提到的非数字字符,其他地方一旦出现,则忽略该字符以及其后的字符
4. 考虑边界,即是否超出Integer.MAX_VALUE,Integer.MIN_VALUE。