这个题目也很简单 就是刚开始没看清楚题目意思 导致思维很混乱
后来重新理解了一遍题目 很快通过了
以后还是要先理解题目意思再写代码……否则就是浪费时间
代码:
int myAtoi(char* str) {
int INTMAX=pow(2,31)-1;
int INTMIN=-pow(2,31);
int len = strlen(str);
int num = 0;
int flag = 1; //1表示正,0表示负
int i = 0;
while(i<len)
{
if(str[i]==32)
i++;
else if((str[i]>=48&&str[i]<=57)||str[i]==43||str[i]==45)//找到第一个非空格的符号或者数字
{
int j=i;
if(str[i]==45)
{
flag = 0;
j++;
}
if(str[i]==43)
{
flag = 1;
j++;
}
while(str[j]>=48&&str[j]<=57)
{
if((num>INTMAX/10&&flag==1)||(num==INTMAX/10&&flag==1&&str[j]>55))
return INTMAX;
if((num<INTMIN/10&&flag==0)||(num==INTMIN/10&&flag==0&&str[j]>56))
return INTMIN;
if(flag==1)
num = num*10 + (str[j]-48);
else
num = num*10 - (str[j]-48);
j++;
}
break;
}
else
return 0;
}
return num;
}