[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 };

 

你可能感兴趣的:(LeetCode)