#LeetCode - 字符串转整数(atoi)
需要考虑的几个点:
1.开头是空格字符,跳过空格到非空字符处,如果不是数字或者正负号,则返回0;
2.正负号,如果下一个字符不是数字,则返回0
3.由于给的是string,区分出其他字符与数字的区别
4.范围:INT_MAX (231 − 1) 或 INT_MIN (−231)
5.数字读取后,下一个是非数字,则停止获取数字
##代码如下
class Solution {
class Solution {
public:
int myAtoi(string str)
{
//检测str是否为空
if (str.empty())
return 0;
int i = 0, len = str.size();
//跳过空格
while (i < len && str[i] == ' ')
{
i++;
}
//非空时,判断正负号
int sign = 1;
long result =0;
if (str[i] == '+' || str[i] == '-') {
sign = (str[i++] == '+') ? 1 : -1;
}
while('0'<= str[i] && str[i] <= '9')
{
result = result*10 + (str[i++]-'0');
if(result*sign >= INT_MAX) return INT_MAX;
if(result*sign <= INT_MIN) return INT_MIN;
}
return result * sign;
}
};
参考资料:
https://discuss.leetcode.com/topic/2666/my-simple-solution
https://discuss.leetcode.com/topic/15891/8ms-c-solution-easy-to-understand