细节题,把题目读懂就能做得出来
附代码
1 public static int strToInt(String str) { 2 int begin = 0; // 记录刨除空格以外的第一个有效位 3 long ans = 0L; // 记录临时答案 4 char c = ' '; // 记录第一个有效字符 5 // 找到第一个有效字符 6 for(int i = 0; i < str.length(); i ++) { 7 c = str.charAt(i); 8 if(c == ' ') begin ++; 9 else break; 10 } 11 // 第一个有效字符可用时才进入计算 12 if(c == '-' || c == '+' || Character.isDigit(c)) { 13 if(c == '-' || c == '+') begin ++; 14 // 将第一个有效字符后的每一位数字进行数学计算 15 for(int i = begin; i < str.length(); i ++) { 16 char d = str.charAt(i); 17 if(Character.isDigit(d)) { 18 ans = ans * 10 + d - '0'; 19 if(ans >= 1L << 31) { 20 ans = 1L << 31; 21 break; 22 } 23 } else break; 24 } 25 // 最后考虑符号问题 26 if(c == '-') ans = - ans; 27 if(ans == 1L << 31) ans --; 28 } 29 return (int)ans; 30 }