返回

LeetCode 轻松入门,反转整数,JavaScript 编程语言,浅显易懂,独到视角!

前端

前言

LeetCode 作为算法学习的经典平台,吸引了无数程序员的加入。然而,对于初学者来说,LeetCode 上的众多算法题往往让人望而却步。因此,我们精心挑选了这道简单题——整数反转,作为您算法编程入门的第一步。

这道题不仅考察了您对 JavaScript 语言的基本掌握,还涉及到一些有趣的算法技巧。通过对这道题的深入解析,您将掌握如何将十进制整数转换为字符串,如何提取字符串中的数字,以及如何将这些数字重新组合成一个新的整数。

同时,我们将为您提供多种解法,让您能够选择最适合自己水平的解法进行练习。无论是使用简单的循环还是更高级的 JavaScript 内置函数,我们都会为您详细讲解每种解法的优缺点,帮助您在实践中不断进步。

题干解析

给定一个 32 位有符号整数 x,将这个整数反转并返回。如果反转后整数溢出,那么就返回 0。

示例 1:

输入:x = 123
输出:321

示例 2:

输入:x = -123
输出:-321

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0

解法一:字符串反转

字符串反转是一种简单而直接的方法。我们可以先将整数 x 转换为字符串,然后使用 JavaScript 内置的 reverse() 方法将字符串反转,最后再将反转后的字符串转换为整数返回。

/**
 * 使用字符串反转方法反转整数
 *
 * @param {number} x 需要反转的整数
 * @returns {number} 反转后的整数
 */
const reverseInteger = (x) => {
  // 将整数转换为字符串
  const str = x.toString();

  // 使用 reverse() 方法反转字符串
  const reversedStr = str.reverse();

  // 将反转后的字符串转换为整数
  const reversedInt = parseInt(reversedStr, 10);

  // 判断反转后的整数是否溢出
  if (reversedInt > Number.MAX_SAFE_INTEGER || reversedInt < Number.MIN_SAFE_INTEGER) {
    return 0;
  }

  // 返回反转后的整数
  return reversedInt;
};

解法二:循环反转

循环反转是一种更有效的方法。我们可以使用一个循环,从整数 x 的最低位开始,依次将每一位数字提取出来,并将其添加到一个新的整数中。这样,循环结束后,我们就得到了反转后的整数。

/**
 * 使用循环方法反转整数
 *
 * @param {number} x 需要反转的整数
 * @returns {number} 反转后的整数
 */
const reverseInteger2 = (x) => {
  // 初始化反转后的整数
  let reversedInt = 0;

  // 循环处理整数的每一位数字
  while (x !== 0) {
    // 提取最低位数字
    const lastDigit = x % 10;

    // 将最低位数字添加到反转后的整数中
    reversedInt = reversedInt * 10 + lastDigit;

    // 去掉最低位数字
    x = Math.floor(x / 10);
  }

  // 判断反转后的整数是否溢出
  if (reversedInt > Number.MAX_SAFE_INTEGER || reversedInt < Number.MIN_SAFE_INTEGER) {
    return 0;
  }

  // 返回反转后的整数
  return reversedInt;
};

解法三:JavaScript 内置函数

JavaScript 提供了 Math.abs()Math.sign()Math.floor() 等内置函数,我们可以利用这些函数来简化整数反转的代码。

/**
 * 使用 JavaScript 内置函数反转整数
 *
 * @param {number} x 需要反转的整数
 * @returns {number} 反转后的整数
 */
const reverseInteger3 = (x) => {
  // 获取整数的绝对值
  const absX = Math.abs(x);

  // 获取整数的符号
  const sign = Math.sign(x);

  // 将整数的绝对值反转
  const reversedAbsX = parseInt(absX.toString().split('').reverse().join(''), 10);

  // 根据整数的符号确定反转后的整数
  const reversedInt = sign * reversedAbsX;

  // 判断反转后的整数是否溢出
  if (reversedInt > Number.MAX_SAFE_INTEGER || reversedInt < Number.MIN_SAFE_INTEGER) {
    return 0;
  }

  // 返回反转后的整数
  return reversedInt;
};

结语

通过对 LeetCode 上的简单题“整数反转”的深入解析,我们不仅掌握了多种 JavaScript 解法,也学习到了如何将十进制整数转换为字符串、如何提取字符串中的数字、以及如何将这些数字重新组合成一个新的整数。这些算法技巧不仅在 LeetCode 上有用,在实际的编程工作中也经常会用到。

希望通过这篇文章,能够帮助您顺利开启 LeetCode 算法入门之旅。加油,相信您一定能够在算法的世界里大展宏图!