“整数反转”问题的 Javascript 解答

题目

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。
 

示例 1:

输入:x = 123
输出:321


示例 2:

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


示例 3:

输入:x = 120
输出:21


示例 4:

输入:x = 0
输出:0

提示:

-231 <= x <= 231 - 1

分析

将数当作字符串,反向遍历就能解决问题了,需要注意两个点:

  1. 负数的处理;
  2. 超出 32 位数范围,直接返回 0。

解答

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function (x) {
  var isNegativeNumber = false;
  if (x < 0) {
    isNegativeNumber = true;
  }
  var xStr = x.toString();
  var reverseXArr = [];

  for (var i = xStr.length - 1; i >= 0; i--) {
    reverseXArr.push(xStr[i]);
  }

  var result = parseInt(reverseXArr.join(""), 10);

  if (isNegativeNumber) {
    result = 0 - result;
  }

  if (result < -Math.pow(2, 31) || result > Math.pow(2, 31) - 1) {
    result = 0;
  }

  return result;
};

题目来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/reverse-integer

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注