刚开始我被很长的英文说明给吓住了,看了一些解释之后才明白,不用想太多,只要处理好空格就可以了,正负号可要考虑进去。还有就是字符类型的数字和数字之间的转换,它们都是用ASCIL码存储的,最简单的就是让数字字符减去‘0’得到的就是数字的数值。
代码:
class Solution{
public:
int myAtoi(string str){
if(str.length() == 0)
return 0;
//用long long类型存储结果,可判断是否溢出
long long result = 0;
int sign = 1, i = 0;
//空格不计入计算
while(str[i] == ' '){
if(str[i] == ' ')
i++;
}
if(str[i] == '+')
i++;
else if(str[i] == '-'){
sign = -1;
i++;
}
for(int j = i; j < str.length(); j++){
if(str[j] >= '0' && str[j] <= '9'){
result = result * 10 + (str[j] - '0');
if(result > INT_MAX)
return sign < 0 ? INT_MIN : INT_MAX;
}
else
break;
}
result *= sign;
retu