279 字
1 分钟
Leetcode->整数反转
题目
给你一个 32 位的有符号整数 x
,返回将 x
中的数字部分反转后的结果。
如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1]
,就返回 0。
假设环境不允许存储 64 位整数(有符号或无符号)。
示例 1:
输入:x = 123
输出:321
示例 2:
输入:x = -123
输出:-321
提示:
-231 <= x <= 231 - 1
解题:key:
①转成字符串处理
/**
* @param {number} x
* @return {number}
*/
var reverse = function (x) {
if (x >= 0) {
x = parseInt(x.toString().split('').reverse().join(''))
} else {
x = -x
x = 0 - parseInt(x.toString().split('').reverse().join(''))
}
if(Math.abs(x) >= 2**31){
return 0
}
return x
};
②数学方法
TIP其中
~~
有很多妙用:
- 将字符串转为数值(如果字符串中含非法数字如字母,则结果会转为0)
- 布尔值,undefined,null等也会转为数组
- 对于有小数点的数字,可以取整
/**
* @param {number} x
* @return {number}
*/
var reverse = function (x) {
let rev = 0
while (x) {
const digit = x % 10
x = ~~(x / 10)
rev = rev * 10 + digit
if (Math.abs(rev) >= 2 ** 31){
return 0
}
}
return rev
};
Leetcode->整数反转
https://blog.oceanh.top/posts/algorithm/整数反转/