public int myAtoi(String str) {
if(str==null||str.length()==0)
return 0;
int start = 0;
int n = str.length();
//去掉前面的空格
while(start<n&&str.charAt(start)==' ')
start++;
//计算符号
int sign = 1;
if(start<n&&str.charAt(start)=='-'){
sign=-1;
start++;
}else if(start<n&&str.charAt(start)=='+')
start++;
int ret = 0;
while(start<n){
//如果是数字
if(str.charAt(start)>='0'&&str.charAt(start)<='9'){
//如果为整数
if(sign>0){
//判断是否越界
if(ret>Integer.MAX_VALUE/10||(ret==Integer.MAX_VALUE/10&&str.charAt(start)>'7'))
return Integer.MAX_VALUE;
//累加求值
ret = ret*10+(str.charAt(start)-'0');
}else{
//判断是否越界
if(ret<Integer.MIN_VALUE/10||(ret==Integer.MIN_VALUE/10&&str.charAt(start)>'8'))
return Integer.MIN_VALUE;
//注意这里是减
ret = ret*10-(str.charAt(start)-'0');
}
}else //否则跳出循环
break;
start++;//遍历下一个元素
}
return ret;
}