下面是LeetCode 7. 整数反转的JavaScript 实现,包含常见写法与注意事项 👇
✅ 题目描述(简述)
给你一个32 位有符号整数x,返回将x中的数字部分反转后的结果。
如果反转后整数超出 32 位有符号整数范围
[−2^31, 2^31 − 1],则返回0。
✅ JavaScript 实现(推荐写法)
/** * @param {number} x * @return {number} */ var reverse = function (x) { const sign = x < 0 ? -1 : 1; let num = Math.abs(x); let res = 0; while (num > 0) { res = res * 10 + (num % 10); num = Math.floor(num / 10); } res *= sign; const INT_MIN = -(2 ** 31); const INT_MAX = 2 ** 31 - 1; if (res < INT_MIN || res > INT_MAX) { return 0; } return res; };✅ 字符串写法(更直观)
var reverse = function (x) { const limit = 2 ** 31; const sign = x < 0 ? -1 : 1; const reversed = parseInt( Math.abs(x).toString().split('').reverse().join('') ) * sign; if (reversed < -limit || reversed > limit - 1) { return 0; } return reversed; };✅ 示例
reverse(123); // 321 reverse(-123); // -321 reverse(120); // 21 reverse(1534236469); // 0(溢出)✅ 关键点总结
使用
Math.abs()处理负数用
% 10取末尾数字用
Math.floor(num / 10)去掉末尾必须检查 32 位整数溢出
2 ** 31 - 1是最大值
如果你需要逐行讲解或时间/空间复杂度分析,也可以告诉我 😊