题目:整数反转
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意: 假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-integer/
解题思路
数字反转可以使用栈推出的思路去解决,以数字123
为例:
123%10
会得到最后一位数字3
,推出3
后需要要继续推出2
,那么可以用123/10
把3
删除掉,继续用12%10
把2
推出来,推出后原先的3
要先乘以10再与2
相加,即3*10+2=32
,以此类推就可以把数字反转过来- 在推出过程中也需要判断推出组合的新数字有没有溢出,如果溢出则直接返回0,没有则继续上一步循环
代码实现
const reverse = (x) => {
let res = 0,
min = Math.pow(-2, 31),
max = Math.pow(2, 31) - 1;
while (x) {
res = res * 10 + x % 10;
x = parseInt(x / 10);
if(res < min || res > max) return 0
}
return res
};