# 整数反转
# 题目
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−2^31, 2^31 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
示例 3:
输入:x = 120
输出:21
示例 4:
输入:x = 0
输出:0
提示:
-2^31 <= x <= 2^31 - 1
力扣🔗:https://leetcode-cn.com/problems/reverse-integer (opens new window)
# 解题思路
- 首先取传入数字的绝对值,然后通过几个工具函数将其反转。
- 完成上一步后,用得到的值与
0
进行|
操作,如果该值超过 32 位,返回的结果将不等于该值本身,由此判断是否整数溢出。 - 最后根据传入值的正负性,修改上一步得到的值并返回。
# 代码实现
/**
* @param {number} x
* @return {number}
*/
function reverse(x) {
const r = +Math.abs(x)
.toString()
.split('')
.reverse()
.join('')
return (r | 0) === r ? (x < 0 ? -r : r) : 0
}
← Z 字形变换 字符串转换整数 (atoi) →