原题链接
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;}
};