与之前的文章 atoi类似,这道题多了 Leetcode 题目的一些限制,条件有所改变,只需注意条件即可。
class Solution {
public:
int myAtoi(string str)
{
if(str.length() == )
return ;
long ret = ;
int flag = ;
//跳过空格
int i = ;
while(isspace(str[i]))
++i;
//符号
if(str[i] == '-')
{
flag = ;
++i;
}
else if(str[i] == '+')
{
flag = ;
++i;
}
//判断非空的第一个字符
if(str[i] < '0' || str[i] > '9')
return ;
for(;i < str.length(); ++i)
{
if(str[i] >= '0' && str[i] <= '9')
ret = ret * + str[i] - '0';
else
break;
if(ret > INT_MAX && flag == )
return INT_MAX;
if(ret > INT_MAX && flag == )
return INT_MIN;
}
if(flag == )
return ret * (-);
else
return ret;
}
};