这题考察的是字符串转数字。需要注意的几个点是
1. 去掉字符串里面,前后所有的空格。例子," 111 23 4 4 "需要处理成"1112344",跳过所有的空格。
2. 先判断第一个char是不是一个正负号,若是负号记得最后乘以-1。
3. 判断每个char是不是介于0-9之间,若不是,立马退出循环。若是,就正常计算。
1 /** 2 * @param {string} str 3 * @return {number} 4 */ 5 var myAtoi = function(str) { 6 let i = 0; 7 let sign = 1; 8 let res = 0; 9 while (str.charAt(i) == ' ') { 10 i++; 11 } 12 if (str.charAt(i) === '+') { 13 i++; 14 } else if (str.charAt(i) === '-') { 15 sign = -1; 16 i++; 17 } 18 19 while (str.charAt(i) >= '0' && str.charAt(i) <= '9') { 20 res = res * 10 + (str.charAt(i) - 0); 21 if (res * sign >= 2147483647) { 22 return 2147483647; 23 } else if (res * sign <= -2147483648) { 24 return -2147483648; 25 } 26 i++; 27 } 28 return res * sign; 29 };