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.
Update (2015-02-10):
The signature of the C++
function had been updated. If you still see your function signature accepts a const char *
argument, please click the reload button to reset your code definition.
int atoi(string str) {
int result =0;
bool beone = true;
int flag =1;
int k =0;
while (k<str.size()&&str[k]==' ')
k++;
for (int i = k;i!=str.size();++i){
if (str[i] == '-'||str[i] == '+'){
if (beone){
flag = str[i] == '-'? -1:1;
beone = false;
continue;
}
else
return 0;
}
else if (str[i]>='0'&&str[i]<='9')
{
if(result > INT_MAX/10||(result == INT_MAX/10&&str[i]-'0'>7))//out of range
return flag < 0 ? INT_MIN : INT_MAX;
result = 10*result+str[i]-'0';
}
else
break;
}
return flag*result;
}