LeetCode7.整数反转 JavaScript
发布日期:2025-04-05 03:35:54 浏览次数:10 分类:精选文章

本文共 1273 字,大约阅读时间需要 4 分钟。

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。示例:

输入 123,输出 321;输入 -123,输出 -321;输入 120,输出 21。

本文将详细介绍如何实现这一功能,并对代码进行优化。

方法思路

要实现整数反转,可以按照以下步骤操作:

  • 转换为字符串:首先将整数转换为字符串形式,便于处理每一位数字。
  • 处理符号:检查整数是否为负数或正数。如果为负数,将负号单独记录,处理剩余的数字。
  • 反转数字部分:将数字字符反转,注意去掉前导零(如反转120后的021去掉前导零,得到21)。
  • 重新拼接符号:将符号添加到反转后的数字前面,形成结果字符串。
  • 检查溢出情况:根据32位有符号整数的范围判断反转后的结果是否溢出。如果溢出,返回0;否则,返回反转后的数值。
  • 代码实现

    function reverseNumber(x) {    if (x === 0) return 0; // 特殊情况返回0    const str = x.toString();    const isNegative = str[0] === '-';    let digits = '';    // 如果是负数,取绝对值部分处理    if (isNegative) {        digits = str.slice(1);    } else {        digits = str;    }    // 把数字反转    const reversed = digits.split('').reverse().join('');    // 去除前导零,若是单零则留一个    let processed = reversed.replace(/^0+/g, '');    processed = processed === '' ? '0' : processed;    const resultStr = isNegative ? `-${processed}` : processed;    const num = parseInt(resultStr, 10);    // 检查是否溢出    if (num > Math.pow(2, 31) - 1 || num < Math.pow(-2, 31)) {        return 0;    }    return num;}

    代码解析

  • 特殊情况处理:如果输入为0,直接返回0。
  • 转换字符串:将整数转换为字符串以便处理。
  • 处理符号:检查是否为负数,存储符号,处理数字部分。
  • 反转数字:将数字反转并转换回字符串。
  • 去除前导零:去除反转后的前导零,确保结果正确。
  • 重新拼接符号:将符号添加到反转后的数字前面,形成结果字符串。
  • 检查溢出:根据32位有符号整数范围检查结果,如果溢出则返回0。
  • 总结

    通过上述步骤和代码,我们可以正确地将给定的32位整数反转。如果反转后的结果溢出范围,则返回0。这种方法有效地处理了正负整数和前导零问题,确保结果的准确性。

    上一篇:Leetcode963. Minimum Area Rectangle II最小面积矩形2
    下一篇:leetcode507

    发表评论

    最新留言

    哈哈,博客排版真的漂亮呢~
    [***.90.31.176]2025年04月27日 00时05分01秒