跳至主要內容

7. Reverse Integer


7. Reverse Integeropen in new window

🟠   🔖  数学  🔗 LeetCodeopen in new window

题目

Given a signed 32-bit integer x, return x with its digits reversed. If reversing x causes the value to go outside the signed 32-bit integer range [-2^31, 2^31 - 1], then return 0.

Assume the environment does not allow you to store 64-bit integers (signed or unsigned).

Example 1:

Input: x = 123

Output: 321

Example 2:

Input: x = -123

Output: -321

Example 3:

Input: x = 120

Output: 21

Constraints:

  • -2^31 <= x <= 2^31 - 1

题目大意

给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为  [−2^31,  2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。

解题思路

  • 这一题是简单题,要求反转 10 进制数。类似的题目有 第 190 题
  • 这一题只需要注意一点,反转以后的数字要求在 [−2^31, 2^31 − 1]范围内,超过这个范围的数字都要输出 0

代码

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function (x) {
  const isNegative = x > 0 ? 1 : -1;
  let temp = 0;

  x *= isNegative;

  while (x > 0) {
    temp = temp * 10 + (x % 10);
    x = Math.floor(x / 10);

    if (temp < -(2 ** 31) || temp > 2 ** 31 - 1) return 0;
  }

  return temp * isNegative;
};

相关题目

相关题目
- [8. 字符串转换整数 (atoi)](./0008.md)
- [190. 颠倒二进制位](https://leetcode.com/problems/reverse-bits)
- [2119. 反转两次的数字](https://leetcode.com/problems/a-number-after-a-double-reversal)
- [2442. 反转之后不同整数的数目](https://leetcode.com/problems/count-number-of-distinct-integers-after-reverse-operations)