[Leetcode] 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.

 

别人的代码,很精简,值得学习。

 

 1 class Solution {
 2 public:
 3     int atoi(const char *str) {
 4         assert(str != NULL);  
 5         while(isspace(*str)) str++;  // remove ' '  
 6         
 7         int sign = (*str == '-') ? -1 : 1;  
 8         if (*str == '-' || *str == '+')    // if can check one char  
 9             str++;  
10                
11         int ret = 0;  
12         while(isdigit(*str))   // is digit  
13         {  
14             int digit = *str - '0';  
15                
16             if (INT_MAX / 10 >= ret)  
17                 ret *= 10;  
18             else  
19                 return sign == -1 ? INT_MIN : INT_MAX;  
20                    
21             if (INT_MAX - digit >= ret)  
22                 ret += digit;  
23             else  
24                 return sign == -1 ? INT_MIN : INT_MAX;  
25                    
26             str++;  
27         }  
28            
29         return ret * sign;  
30     }
31 };

 

posted @ 2014-03-28 22:06  Eason Liu  阅读(147)  评论(0编辑  收藏  举报