LeetCode JS | 007 反转整数

46次阅读

共计 668 个字符,预计需要花费 2 分钟才能阅读完成。

LeetCode | 007 反转整数
No.007 Reverse Integer
题目描述
给定一个 32 位有符号整数,将整数中的数字进行反转。
示例
// 示例 1
输入: 123
输出: 321

// 示例 2
输入: -123
输出: -321

// 示例 3
输入: 120
输出: 21
注意:
假设我们的环境只能存储 32 位有符号整数,其数值范围是 [−2^31, 2^31 − 1]。根据这个假设,如果反转后的整数溢出,则返回 0。
分析
相比于字符串有索引,取出整数的每一位通常是借助运算法则:除法、取余、乘法。
此题我们可以运用循环取余的方式从最低位依次取出整数的每一位,然后对每一位加上之前的结果,乘以 10,就可以实现整数的反转。
但是这里需要注意的是:可能是负整数,对于这种情况,得先设置一个变量保存符号,在最后返回结果是再把符号加上。另外,需要注意整数的范围,特别注意的是反转之后的整数也应该在这个范围内。
JS 实现
var reverse = function(x) {
if (x < Math.pow(-2, 31) || x > Math.pow(2, 31) – 1) return 0
let ret, res = 0, nag
if (x < 0) {
x = Math.abs(x)
nag = true
}
while(x) {
ret = x % 10
x = Math.floor(x / 10)
res += ret
if (x) {
res *= 10
}
}
res = (res < Math.pow(-2, 31) || res > Math.pow(2, 31) – 1) ? 0 : res
return nag ? -res : res
};
关于
本系列更新 LeetCode JS 版本的思路解法。欢迎一起交流学习。
这是我的公众号:

正文完
 0