注意审题
1.字符串前后去除空格 trim()
2.可能存在正负号需注意
3.去除前导零
4.之后如果遇到不是数字的直接返回0
5.数字后面不是数字的部分直接break
6.最大值最小值处理
public int myAtoi(String s) {
s = s.trim();
if(s.length() == 0) return 0;
char c = s.charAt(0);
int start = 0,pro = 1;
if(c == '+'){
start++;
}else if(c == '-'){
start++;
pro = -1;
}
for(int i = start;i < s.length(); i ++){
if(s.charAt(i) == '0'){
start++;
}else if((s.charAt(i) - '0') > 9 || (s.charAt(i) - '0') < 0 || s.charAt(i) == ' '){
return 0 ;
}
else break;
}
long num = 0;
int x = 10;
while(start < s.length()){
if(s.charAt(start) == ' ' || (s.charAt(start) - '0') > 9 || (s.charAt(start) - '0') < 0){
break;
}
num = num * x + (s.charAt(start++) - '0');
if(pro*num >= Integer.MAX_VALUE) return Integer.MAX_VALUE;
if(pro*num <= Integer.MIN_VALUE) return Integer.MIN_VALUE;
}
return (int)(pro*num);
}