

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;}
