7. 整数反转|刷题打卡

117 阅读1分钟

本文正在参与掘金团队号上线活动,点击 查看大厂春招职位

一、题目描述:

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。 如果反转后整数超过 32 位的有符号整数的范围 [−231,  231 − 1] ,就返回 0。 假设环境不允许存储 64 位整数(有符号或无符号)。  

示例 1:

输入:x = 123
输出:321

示例 2:

输入:x = -123
输出:-321

示例 3:

输入:x = 120
输出:21

示例 4:

输入:x = 0
输出:0

提示:

-231 <= x <= 231 - 1 原题地址:7. 整数反转

二、思路分析:

image.png

  1. 获取 x 的个位。
  2. x 的个位变成 reverseX 的个位。
  3. 然后把 x 的个位去掉。
  4. 循环上面的这三步,直到 x 为 0 为止。
  5. 判断结果为 0 的特殊情况
  6. 返回结果

三、AC 代码:

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
    let reverseX = 0;
    while(x !== 0) {
        let tem = x % 10;
        reverseX = reverseX * 10 + tem;
        x = parseInt(x / 10);
    }     
    if (reverseX < 0 && reverseX <= -2147483648) {
        return 0;
    }
    if(reverseX > 0 &&  reverseX >= 2147483647 ) {
        return 0;
    }
    return reverseX;
};

四、总结:

image.png

  • 时间复杂度 O(N)O(N)
  • 空间复杂度 O(1)O(1)