求star

开源不易,喜欢请点个star吧

Ocean Han
279 字
1 分钟
Leetcode->整数反转
2022-08-13

题目#

给你一个 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/整数反转/
作者
Ocean Han
发布于
2022-08-13
许可协议
CC BY-NC-SA 4.0
最后修改时间
2024-08-10 10:08:49