跳至主要內容

7. 整数反转


7. 整数反转open in new window

🟠   🔖  数学  🔗 力扣open 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)open in new window[✓]字符串
190颠倒二进制位open in new window[✓]位运算 分治
2119反转两次的数字open in new window数学
2442反转之后不同整数的数目open in new window数组 哈希表 数学 1+