LeetCode题解——String to Integer(atoi)

题目

字符串转换为数字。

 

解法

这道题的意思是要考虑到,如果有前置的空字符,则跳过;如果超出数字范围,则返回最大/最小整数;如果碰到第一个不能转换的字符,则返回。

 

代码

 1 class Solution {  2 public:  3     int atoi(const char *str) {  4         int sign = 1, result = 0;  5         int len = strlen(str);  6         int i = 0;  7         

 8         for( ; i < len && str[i] == ' '; ++i)  //跳过前置的空字符  9  ; 10         

11         if(str[i] == '+')    //如果有符号且为正 12             ++i; 13         else if(str[i] == '-')  //负数 14  { 15             sign = -1; 16             ++i; 17  } 18         

19         for( ; i < len; ++i) 20  { 21             if(str[i] < '0' || str[i] > '9')  //不能转换的字符 22                 break; 23             if(result > INT_MAX/10 || (result == INT_MAX/10 && str[i] > INT_MAX%10 + '0')) //即将超出int范围 24                 return sign == -1 ? INT_MIN : INT_MAX; 25             result *= 10; 26             result += str[i] - '0'; 27  } 28         

29         return result * sign;  //记得加上符号位 30  } 31 };

 

你可能感兴趣的:(LeetCode)