题目:Implement atoi to convert a string to an integer.
思路:需要注意一些特殊的输入
class Solution {
public:
int atoi(const char *str)
{
int len = strlen(str);
int i,k;
int64_t j = 1;
int result = 0;
bool positive = true;
int max_or_min = 0;
for(k=0; k<len; k++)
{
if (str[k] != ' ')
{
if(str[k] == '-')
{
positive = false;
k++;
}
else if (str[k] == '+')
k++;
break;
}
}
for(i=len-1; i>=k; i--)
{
if ((str[i]-'0')>=0 && (str[i]-'0')<=9)
{
if (positive)
{
if (uint64_t(result+(str[i]-'0')*j) >= INT_MAX)
{
max_or_min = INT_MAX;
j = 1;
continue;
}
result += (str[i]-'0')*j;
}
else
{
if (result + (-1)*(str[i] - '0')*j <= INT_MIN)
{
max_or_min = INT_MIN;
j = 1;
continue;
}
result -= int((str[i]-'0')*j);
}
j *= 10;
}
else
{
max_or_min = 0;
result = 0;
j = 1;
}
}
if (max_or_min != 0)
return max_or_min;
return result;
}
};