原题
Implement atoi to convert a string to an integer.
即实现一个atoi函数
注意事项
转换不难。 但要注意以下四个问题:
- 处理前置位的空格符
- 判断正负
- 判断是否溢出并处理(超出则输出INT_MAX 或者 INT_MIN)
- 处理非法输入(除一开始的空格和正负号外,一遇到非数字字符即返回)
源代码
class Solution {
public:
int myAtoi(string str) {
int sign = 1;
int ix = 0;
int sum = 0;
while(str[ix] == ' ') {ix++;}
if (str[ix] == '-' || str[ix] == '+') {
sign = 1 - 2 * (str[ix++] == '-');//Mark
}
while(str[ix] >= '0' && str[ix]<= '9')
{
if (sum > INT32_MAX / 10 || (sum == INT32_MAX / 10 && (str[ix] - '0') > 7))//Mark
{
if (sign == 1) return INT32_MAX;
else
return INT32_MIN;
}
sum = sum * 10 + (str[ix] - '0');
ix++;
}
return sum*sign;
}
};