LeetCode 轻松入门,反转整数,JavaScript 编程语言,浅显易懂,独到视角!
2023-11-11 21:41:00
前言
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 算法入门之旅。加油,相信您一定能够在算法的世界里大展宏图!