返回

用 JavaScript 征服 LeetCode 初级算法:字符串转换整数

前端

在编程的世界里,字符串和整数是不可或缺的元素。LeetCode《初级算法》中的「字符串转换整数」问题,正是考验我们对这两种基本元素的理解和运用。今天,就让我们用 JavaScript 的优雅和强大,来征服这一编程挑战!

算法解析

「字符串转换整数」问题的核心在于将给定的字符串解析成对应的整数。为了达成这个目标,我们需要遵循以下步骤:

  1. 检查输入的合法性: 首先,我们要确保给定的字符串是一个有效的数字字符串。这包括检查字符串是否包含非数字字符、是否存在多余空格、以及字符串的符号是否正确(正负号的位置等)。

  2. 去除前导空格: 如果字符串开头存在多余空格,我们需要将其去除,以确保字符串的纯净性。

  3. 识别并处理符号: 如果字符串包含正负号,我们需要先将其识别出来,并将其与数字部分分开处理。

  4. 将字符串转换为数字: 接下来,我们将数字部分转换为对应的整数。我们可以使用 JavaScript 内置的 parseInt() 函数来完成这一操作。

  5. 处理边界情况: 最后,我们需要检查转换后的整数是否超出 JavaScript 的安全整数范围(-253 到 253-1)。如果超出,我们需要对结果进行特殊处理,以确保其准确性。

JavaScript 实现

/**
 * 将字符串转换为整数
 *
 * @param {string} str 数字字符串
 * @return {number} 整数
 */
const myAtoi = (str) => {
  // 检查输入合法性
  if (!str || str.length === 0) {
    return 0;
  }

  // 去除前导空格
  str = str.trim();

  // 识别并处理符号
  let sign = 1;
  if (str[0] === '+' || str[0] === '-') {
    sign = str[0] === '+' ? 1 : -1;
    str = str.substring(1);
  }

  // 将字符串转换为数字
  let result = parseInt(str, 10);

  // 处理边界情况
  if (result > Number.MAX_SAFE_INTEGER) {
    return Number.MAX_SAFE_INTEGER;
  } else if (result < Number.MIN_SAFE_INTEGER) {
    return Number.MIN_SAFE_INTEGER;
  }

  // 返回转换后的整数
  return result * sign;
};

结语

在本文中,我们详细介绍了如何使用 JavaScript 征服 LeetCode《初级算法》中的「字符串转换整数」问题。我们从算法解析到 JavaScript 实现,一步步剖析了问题的本质和解决方案。希望这篇博文能帮助您在编程的道路上更进一步,也欢迎您在评论区留下您的感想和建议。

提示:

  • 为了提高代码的可读性和可维护性,您可以在代码中添加适当的注释。
  • 您还可以通过添加单元测试来确保代码的正确性。