Implement atoi to convert a string to an integer.
Hint: Carefully consider all possible input cases. If you want a challenge, please do not see below and ask yourself what are the possible input cases.
Notes: It is intended for this problem to be specified vaguely (ie, no given input specs). You are responsible to gather all the input requirements up front.
只超过了9%。可能是用if的判断过多了,可以优化。
class Solution {
public:
int myAtoi(string str) {
int iLen = str.length();
bool bSign = true;
bool bBegin = false;
long lNumber = 0;
long lStr = 0;
long lmax = 2147483647;
long lmin = -lmax - 1;
for (int i = 0;i < iLen;i++)
{
if (str[i] >= '0' && str[i] <= '9')
{
lStr = (long)(str[i] - '0');
bBegin = true;
if (lNumber >214748364)
{
if (bSign)
{
return lmax;
}
else
{
return lmin;
}
}
else if (lNumber == 214748364)
{
if (bSign)
{
if (lStr >=8)
{
return lmax;
}
lNumber = 10 * lNumber + lStr;
}
else
{
if (lStr > 8)
{
return lmin;
}
lNumber = 10 * lNumber + lStr;
}
}
else
{
lNumber = 10 * lNumber + lStr;
}
}
else if (str[i] == ' ' && bBegin == false)
{
continue;
}
else if (str[i] == '-' &&bBegin == false)
{
bSign = false;
bBegin = true;
}
else if (str[i] == '+'&&bBegin == false)
{
bSign = true;
bBegin = true;
}
else
{
break;
}
}
if (bSign)
{
return lNumber;
}
else
{
return -lNumber;
}
}
};