Implement atoi toconvertastringtoaninteger.
Hint: Carefully consider all possible input cases. If you want a challenge, please donot 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.
分析存在四种情况
(1)字符串前面有空格
__ asf456
(2)字符串中有字母
354436bdc
(3)字符串前面有符号
+456
(4)字符串中的数字大于 INT_MAX 或小于INT_MIN
+545654756656856
解题:
classSolution {public:
int myAtoi(string str) {
int flag = 1;
long result = 0;
int max = 2147483647;
int min = -2147484648;
int i = 0;
while (str[i] != '\0'&&str[i] == ' ')
{
i++; //跳过空格
}
if (str[i] == '-')
{
flag = -1;
++i; //带符号的情况
}
elseif (str[i] == '+')
{
flag=1;
++i;
}
while (str.length()>i)
{
if (str[i] >= '0'&&str[i] <= '9')
{
result = result * 10 + (str[i] - '0');
++i;
}
else//不是数字即中断循环break;
if (result*flag > max)//判断越界return max;
if (result*flag<=min)
return min;
}
return result*flag;
}
};