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.
class Solution {
public:
bool isNum(char a)
{
if(a < '0' || a > '9')
return false;
return true;
}
int myAtoi(string str) {
int result = 0;
int len = str.length();
int flag;
int i = 0;
while(str[i] == ' ') //去掉前面的空格
i++;
if((str[i] == '+' || str[i] == '-') && (str[i+1] == '+' || str[i+1] == '-'))
{
return 0;
}
else if(str[i] == '-')
{
flag = -1;
i++;
}
else if(str[i] == '+')
{
flag = 1;
i++;
}
else
{
flag = 1;
}
while(str[i] == '0') //去掉前面的0
i++;
int j = i;
for(; i<len; i++)
{
if(!isNum(str[i]))
break;
result = result * 10 + str[i] - '0';
if(i-j >= 10 || result < 0) //溢出
if(flag > 0)
return pow(2,31) - 1;
else
return pow(2, 31) * (-1);
}
return result * flag;
}
};