代码改变世界

[LeetCode #8] String to Integer (atoi)

2016-10-01 11:43  amadis  阅读(133)  评论(0编辑  收藏  举报

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.

 1 int myAtoi(char *s){
 2     int ret = 0;
 3     int i = 0;
 4     int digit = 0;
 5     int sign = 1;
 6 
 7     while(s[i] && s[i] == ' '){ i++; }
 8     if (s[i] == '+') {sign = 1; i++;}
 9     else if (s[i] == '-') {sign = -1; i++;}
10     
11     while (s[i]){
12         if ((s[i] <= '9') && (s[i] >= '0')){
13             digit = s[i] - '0';
14         }
15         else{
16             break;
17         }
18         if(2147483647/10 < ret || 2147483647/10 == ret && 2147483647%10 < (s[i] -'0')) 
19         {
20             return sign == -1 ? (-2147483648) : 2147483647;
21         } 
22         ret = ret * 10 + digit;  
23         i++;
24     }    
25     return ret * sign;
26 }