8. String to Integer (atoi)

Leetcode link

题目简介

本题给了一个参数 s,要求我们将字符串 s 转成 32 位的整数

此外,题目要求:

  1. 忽略最前面的空白字符
  2. 需要考虑正负符号 -, +
  3. 忽略数字前面的 0,并且如果转换过程中遇到了数字以外的字符就要停止,返回当前转换的数字
  4. 如果转换的数字超过了 32 位,只需返回 32 位的最大值/最小值

Javascript

/**
 * @param {string} s
 * @return {number}
 */
var myAtoi = function (s) {
    const ZERO = '0'.charCodeAt(0)
    const POS_LIMIT = 2 ** 31 - 1
    const NEG_LIMIT = -(2 ** 31)

    const len = s.length
    let res = 0
    let i = 0
    let sign = 1

    // skip the leading space
    while (i < len && s[i] === ' ') {
        i++
    }

      // check the sign
    if (s[i] === '-' || s[i] === '+') {
        sign = s[i] === '-' ? -1 : 1
        i++
    }

    while (i < len && s[i] >= '0' && s[i] <= '9') {
        res = res * 10 + s[i].charCodeAt(0) - ZERO

        if (sign * res > POS_LIMIT) {
            return POS_LIMIT
        }
        if (sign * res < NEG_LIMIT) {
            return NEG_LIMIT
        }

        i++
    }

    return res * sign
};

results matching ""

    No results matching ""