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.
c++:class Solution {
public:
bool isnum(char c)
{
return c >= '0' && c <= '9';
}
int atoi(const char *str) {
int len = strlen(str);
if(len == 0)
{
return 0;
}
bool neg = false;
int j=0;
while(j < len && str[j] == ' ')
{
j ++;
}
if(j < len && str[j] == '-')
{
j ++;
neg = true;
}
else if(j < len && str[j] == '+')
{
j ++;
}
int tmp = 0;
for(;j < len;j ++)
{
if(!isnum(str[j]))
{
break;
}
else
{
if(INT_MAX / 10 < tmp)
{
return neg ? INT_MIN:INT_MAX;
}
else
{
tmp *= 10;
if(INT_MAX - (str[j] - '0') < tmp)
{
return neg ? INT_MIN:INT_MAX;
}
else
{
tmp = tmp + (str[j] - '0');
}
}
}
}
if(neg)
{
tmp *= -1;
}
return tmp;
}
};