因为心情不太好,好几天没有做题,今天看了一下这道题,觉得还可以,就是一道模拟题,按照题目要求做就好了,其中有一种情况没有考虑到,就是'+','-'。
int myAtoi(char* str) {
int length = strlen(str);
int flag=0;
char s1[1005];
int MIN=-2147483648;
int MAX=2147483647;
int result=0;
memset(s1,'\0',sizeof(s1));
int k=0;
for(int i=0;i<length;i++){
if(!flag)
{
if(str[i]==32){
continue;
}
else if(str[i]=='+'||str[i]=='-'||(str[i]>='0'&&str[i]<='9')){
s1[k++]=str[i];
flag=1;
}
else return 0;
}
else
{
if(str[i]>='0'&&str[i]<='9')
{
s1[k++]=str[i];
}
else break;
}
}
s1[k]='\0';
if(!k||(k==1&&(s1[0]=='+'||s1[0]=='-'))) return 0;
int j=0;
if(s1[0]=='-') flag=0,j++;//代表是负数
if(s1[0]=='+') j++;
for(j;j<k;j++){
result*=10;
result+=s1[j]-'0';
if(result%10!=s1[j]-'0'){
if(flag) return MAX;
else return MIN;
}
}
if(!flag) result=-result;
return result;
}
还有一点,就是自己写代码不够简洁。。