题目:https://leetcode-cn.com/problems/string-to-integer-atoi/
代码:
class Solution {
public:
int myAtoi(string str) {
int ret = 0;
int i = 0;
int size = str.size();
int rev = 0;
if (size == 0)
{
return ret;
}
while (i < size&&(str[i] == ' '))
{
i++;
}
int first = i;
if (first < size)
{
if (str[first] == '-')
{
i++;
while (i < size)
{
if (str[i] >= '0'&&str[i] <= '9')
{
int tmp = str[i] - '0';
if (rev < INT_MIN / 10 || (rev == INT_MIN / 10 && tmp >8))
{
return INT_MIN;
}
rev = rev * 10 - tmp;
i++;
}
else
{
break;
}
}
}
else if (str[first] == '+')
{
i++;
while (i < size)
{
if (str[i] >= '0'&&str[i] <= '9')
{
int tmp = str[i] - '0';
if (rev > INT_MAX / 10 || (rev == INT_MAX / 10 && tmp >7))
{
return INT_MAX;
}
rev = rev * 10 + tmp;
i++;
}
else
{
break;
}
}
}
else
{
while (i < size)
{
if (str[i] >= '0'&&str[i] <= '9')
{
int tmp = str[i] - '0';
if (rev > INT_MAX / 10 || (rev == INT_MAX / 10 && tmp >7))
{
return INT_MAX;
}
rev = rev * 10 + tmp;
i++;
}
else
{
break;
}
}
}
}
return rev;
}
};
结果: