请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数)。
思路
- 根据题目描述的逻辑实现即可
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36
| var myAtoi = function (s) { if (!s) { return 0 } const MIN_VAL = -1 << 31 const MAX_VAL = (1 << 30) - 1 + (1 << 30) let startIndex = 0 while (s[startIndex] === ' ') { ++startIndex } let factor = 1 if (s[startIndex] === '+') { ++startIndex } else if (s[startIndex] === '-') { factor = -1 ++startIndex } let result = 0 for (let i = startIndex; i < s.length; ++i) { if (!/^[0-9]$/.test(s[i])) { break } const val = Number(s[i]) if (factor < 0) { if ((MIN_VAL + val) / 10 > -result) { return MIN_VAL } } else { if ((MAX_VAL - val) / 10 < result) { return MAX_VAL } } result = result * 10 + val } return result * factor }
|