leetCode.008 String to Integer (atoi)

题意

将一个含数字的字符串转换成int

思路

实现并不困难,主要考虑各种情况。

 

1.字符串是不是空字符串;

2.字符串带空格或其他字符怎么办;

3.带正负号的处理;

4.字符串中的数超过int型的范围怎么办(int 范围:-2147483648~2147483647   0x80000000~0x7fffffff)

 

 1 int myAtoi(char* str) {
 2     int len=strlen(str);
 3     int flag=1,i=0;
 4     long long ans=0;
 5     if(len==0)
 6         return 0;
 7     else if(len==1)
 8     {
 9         if(str[0]>='0' && str[0]<='9')
10             return str[0]-'0';
11         else return 0;
12     }
13     else
14     {
15         int i=0;
16         while(str[i]==' ') i++;   //前面的空字符串跳过
17         if(str[i]=='-') {flag=-1;i++;}
18         else  if(str[i]=='+') {flag=1;i++;}
19         else if(str[i]>='0' && str[i]<='9') {flag=1;}
20         while(str[i]!='\0')
21         {
22             if(str[i]>='0' && str[i]<='9')
23             {
24                 ans=ans*10+str[i]-'0';i++;
25                 if(flag*ans>INT_MAX) { return INT_MAX;break;}
26                 else if(flag*ans<=INT_MIN){return INT_MIN;break;}
27             }
28             else{return ans*flag;break;} //如果遇到非数字的字符串,后面的停止扫描
29     
30         }
31         return (int)(ans)*flag;
32     }
33 }

 

posted @ 2015-07-19 13:27  Mad.King  阅读(135)  评论(0)    收藏  举报