传送门
字符串遍历
-
图解
-
代码实现
var strToInt = function (s) { let flag = 1; // 符号位默认为正数 let inx = 0; // 字符索引 let res = 0; let bndry = 214748364; // 去掉字符前面的空格 while (s[inx] === ' ') { inx++; } // 获取符号位 if (inx < s.length && s[inx] === '+') { inx++; } else if (inx < s.length && s[inx] === '-') { flag = -1; inx++; } while (inx < s.length && s[inx] <= '9' && s[inx] >= '0') { // 字符转数字: 此数字的 ASCII 码 与 0 的 ASCII 码相减即可 let digit = s[inx++] - '0'; if (res > bndry || res === bndry && digit > 7) return flag == 1 ? 2147483647 : -2147483648; res = res * 10 + digit; } return res * flag; };
正则
-
代码实现:
var myAtoi = function (str) { //利用正则 // [ '1213342232', index: 0, input: '1213342232', groups: undefined ] let result = str.trim().match(/^[-|+]{0,1}[0-9]+/) if (result != null) { if (result[0] > (Math.pow(2, 31) - 1)) { return Math.pow(2, 31) - 1 } if (result[0] < Math.pow(-2, 31)) { return Math.pow(-2, 31) } return result[0] } return 0 };
parseInt API
-
代码实现:
var myAtoi = function (str) { const number = parseInt(str, 10); if (isNaN(number)) { return 0; } else if (number < Math.pow(-2, 31) || number > Math.pow(2, 31) - 1) { return number < Math.pow(-2, 31) ? Math.pow(-2, 31) : Math.pow(2, 31) - 1; } else { return number; } };
打赏作者
您的打赏是我前进的动力
微信
支付宝
190.颠倒二进制位
上一篇
评论