这个题就是string 转int
注意几点: 1 前面会有空格,肯定往后跳直到没空格,但是,如果后面有空格,那么不是跳过空格,而是结束循环!!!
2,正负号同时出现,那就直接返回0,而不是负xxxx
3,for的巧用
4,如果引入某包,则可以用INT_MAX和INT_MIN来做整数的最大最小值
class Solution {
public:
int atoi(const char *str) {
int i = 0,result = 0;
bool isNeg =false;
for(i = 0; str[i]== ' '; i++);
if(str[i] == '+'){
i++;
}
else if(str[i] == '-'){
isNeg = true;
i++;
}
while(str[i] >='0'&&str[i] <='9'){
if(result > INT_MAX / 10 || result == INT_MAX / 10 && str[i] >= '8')
return isNeg?INT_MIN:INT_MAX;
result = result*10 +(str[i]-'0');
i++;
}
return isNeg?-result:result;
}
};