publicint atoi (String str){// write code hereif(str == null || str.length()==0)return0;// 处理前导空格
str = str.trim();// 注意:symbol 默认为 1int symbol =1, i =0;if(str.charAt(0)=='-'){
symbol =-1;
i =1;}if(str.charAt(0)=='+') i =1;int sum =0, n =0, max = Integer.MAX_VALUE, min = Integer.MIN_VALUE;for(; i < str.length(); i++){char c = str.charAt(i);
n = symbol *(c -'0');// 特殊字符处理if(c >'9')break;// 上溢出处理if(sum > max /10||(sum == max /10&& max %10< c -'0'))return max;// 下溢出处理if(sum < min /10||(sum == min /10&& min %10> c -'0'))return min;
sum = sum *10+ n;}return sum;}
统一判断,上溢出包含假下溢出 max % 10 = 7,而 min % 10 = 8,当 sum = min,7 < 8 也满足上溢出条件
publicint atoi (String str){// write code hereif(str == null || str.length()==0)return0;
str = str.trim();int symbol =1, i =0;if(str.charAt(0)=='-'){
symbol =-1;
i =1;}if(str.charAt(0)=='+') i =1;int sum =0, max = Integer.MAX_VALUE, min = Integer.MIN_VALUE;for(; i < str.length(); i++){char c = str.charAt(i);if(c >'9')break;if(sum > max /10||(sum == max /10&& max %10< c -'0'))return symbol ==1? max : min;
sum = sum *10+ c -'0';}return symbol * sum;}