https://leetcode-cn.com/problems/string-to-integer-atoi/description/
1.判断字符串长度,等于0表示空串,返回0
2.去掉前导空格字符,判断索引是否大于等于字符串长度,是就返回0
3.初始非空字符不是数字或正负号的返回0,tag记录正负符号
4.循环数字子串,goal × 10 + 新个位,这条公式计算数值
5.按正负、溢出分类返回相应值
class Solution {
public int myAtoi(String str) {
if(str.length() == 0)
return 0;
int i = 0;
while (str.length() > i && str.charAt(i) == ' ')
i++;
if(str.length() <= i)
return 0;
if((str.charAt(i) < '0' || str.charAt(i) > '9') && str.charAt(i) != '-' && str.charAt(i) != '+')
return 0;
boolean tag = false;
if(str.charAt(i) == '-') {
tag = true;
i++;
}
else if(str.charAt(i) == '+')
i++;
long goal = 0;
while (str.length() > i && str.charAt(i) >= '0' && str.charAt(i) <= '9') {
goal = goal * 10 + (str.charAt(i) - 48);
i++;
if(goal > Integer.MAX_VALUE)
break;
}
if(tag == true) {
goal = -goal;
if(goal < Integer.MIN_VALUE)
return Integer.MIN_VALUE;
else return (int)goal;
}else {
if(goal > Integer.MAX_VALUE)
return Integer.MAX_VALUE;
else return (int)goal;
}
}
}