//支持32位下利用除法的溢出判定
class Solution
{
public:
string trim(string s)
{
if (s.empty())
{
return s;
}
s.erase(0, s.find_first_not_of(" "));
s.erase(s.find_last_not_of(" ") + 1);
return s;
}
int myAtoi(string str)
{
str = trim(str);
int i = 0;
bool flag = true;
if (str[0] == '-')
{
flag = false;
i = 1;
}
else if (str[0] == '+')
{
i = 1;
}
int sum = 0;
for (; i < str.size(); i++)
{
if (isdigit(str[i]) == false)
break;
if (!flag)
{
if (INT32_MIN / (-10) < sum || (INT32_MIN / (-10) == sum && str[i] - '0' >= 8))
{
return INT32_MIN;
}
}
else
{
if (INT32_MAX / (10) < sum || (INT32_MAX / (10) == sum && str[i] - '0' >= 7))
{
return INT32_MAX;
}
}
sum *= 10;
sum += str[i] - '0';
}
return flag ? sum : -sum;
}
};