原题链接
1.字符 0~~~~~9 分别对应整数 48~~~~~57
2.先过滤空白
3.确定前面所带的符号
4. long long res = 0; res = res * 10 + str[k] - '0'; 可以通过此方法从左到右高位逐个累加。
class Solution {
public:
int myAtoi(string str) {
long long res = 0;
int k = 0;
while(k < str.size() && (str[k] == ' ' || str[k] == '\t')) k ++ ;
int minus = 1;
if (k >= str.size()) return 0;
if (str[k] == '-') minus = -1, k ++;
if (str[k] == '+')
if (minus == -1) return 0;
else k ++ ;
while(str[k] >= '0' && str[k] <= '9')
{
res = res * 10 + str[k] - '0';
k ++ ;
if (res > INT_MAX) break;
}
res *= minus;
if (res > INT_MAX) return INT_MAX;
if (res < INT_MIN) return INT_MIN;
return res;
}
};