class Solution {
public int strToInt(String str) {
int res =0;
//用于数字溢出判断
int bndry = Integer.MAX_VALUE / 10;
//sign标记 正负号
int i = 0, sign = 1,length = str.length();
//边界判断
if(length == 0) return 0;
//去掉空格
while(str.charAt(i) == ' ')
if(++i == length) return 0;
//第一个字符 是‘-’, sign标记为 -1
if(str.charAt(i) == '-') sign = -1;
//如果第一位是符号,移到下一位开始
if(str.charAt(i) == '-' || str.charAt(i) == '+') i++;
for(int j = i; j < length; j++){
//字符 不在 0~9,表示不是数字,直接返回
if(str.charAt(j) < '0' || str.charAt(j) > '9') break;
//判断溢出
if(res > bndry || res == bndry && str.charAt(j) > '7')
return sign == 1 ? Integer.MAX_VALUE : Integer.MIN_VALUE;
//拼接字符
res = res * 10 + (str.charAt(j) - '0');
}
return sign * res;
}
}