• 如果字符串为空,直接返回0;
  • 剔除字符串开始的空格;
  • 如果字符串全为空格,返回0;
  • 判断正负号,如果没有,默认为'+',正负号标识只允许出现一次,否则返回0;
  • 处理后面的数字部分,如果为其他字符,跳出当前循环,返回最终结果;
  • 如果累计结果超过最大整数范围,返回范围内最大正负数。
class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param s string字符串 
     * @return int整型
     */
    int StrToInt(string s) {
        // write code here
        int len = s.size();
        if (len == 0) return 0;
        int i = 0, sign = 1, count = 0;
        long long num = 0;
        while (i < len && s[i] == ' ') i++;
        if (i >= len) return 0;
        while (i  < len && (s[i] == '-' || s[i] == '+')) {
            if (s[i] == '-') sign = -1;
            i++;
            count++;
            if (count > 1) return 0;
        }
        for (; i < len; i++) {
            if (s[i] < '0' || s[i] > '9') break;
            else {
                num = num * 10 + s[i] - '0';
                if ((num >= INT_MAX) && sign == 1) return INT_MAX;
                if ((num > INT_MAX) && sign == -1) return INT_MIN;
            }
        }
        return sign * num;
    }
};