这题考察的是字符串转数字。需要注意的几个点是
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 };