首页 > 代码库 > 【LeetCode】8. String to Integer (atoi)

【LeetCode】8. String to Integer (atoi)

Implement atoi to convert a string to an integer.

Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.

Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.

Update (2015-02-10):
The signature of the C++ function had been updated. If you still see your function signature accepts a const char * argument, please click the reload button  to reset your code definition.

题意:把符合条件的字符串变为数字

难点:这个题不难,难在要考虑转换条件

  1.连续的数字字符

  2.连续的数字字符前面不能用‘+‘,’-’,之外的字符,而且加减号要和数字相接

  3.连续的数字字符后面可以有字幕(不知道为什么这个可以)

  4.考虑溢出

 1 int myAtoi(char* str) {
 2     int len,i;
 3     len=strlen(str);
 4     long tmp=0;
 5     int flag=0;
 6     for(i=0;i<len;i++)
 7     {
 8         while(str[i]== )
 9             i++;
10             if(str[i]==+)
11                 {
12                     flag=1;
13                     i++;
14                 }
15                 else if(str[i]==-)
16                     {
17                         flag=-1;
18                         i++;
19                     }
20             if(flag&&!(str[i]<=9&&str[i]>=0))
21                 return 0;
22         while(i<len&&(str[i]<=9&&str[i]>=0))
23             {
24                 if(tmp<0)
25                     tmp=tmp*10-(str[i]-0);
26                 else
27                     tmp=tmp*10+(str[i]-0);
28                 if(-1==flag)
29                     {
30                         tmp*=-1;
31                         if(tmp<0)
32                              flag=1;
33                     }
34                 if(tmp>INT_MAX)
35                         return 2147483647;
36                     else if(tmp<INT_MIN)
37                         return -2147483648;
38                 i++;
39             }
40         while(i<len)
41              i++;
42     }
43         return tmp;
44 }

 

【LeetCode】8. String to Integer (atoi)