字符串「1」整数反转 | 刷题打卡

217 阅读1分钟

前言

今天开始刷字符串的题目,还是从简单难度开始刷起。

今日题目

给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。

如果反转后整数超过 32 位的有符号整数的范围 [−2^31,  2^31 − 1] ,就返回 0。

假设环境不允许存储 64 位整数(有符号或无符号)。

提示:-2^31 <= x <= 2^31 - 1

示例 1:

输入:x = 123

输出:321


示例 2:

输入:x = -123

输出:-321


示例 3:

输入:x = 120

输出:21


示例 4:

输入:x = 0

输出:0

题目分析

  1. 如何将一个整数反转? 我们来分析一下输入输出,比如输入是123,输出是321,由于是倒着获取,想到的是取余%

首先想要的是3,123 % 10 = 3,3是123取余的结果

第二想要的是2,12 % 10 = 2, 2是123缩小10倍后取余的结果

最后是1 注意题目要求数字的范围是超过 32 位的有符号整数的范围 [−2^31,  2^31 − 1] ,就返回 0, 所以在返回结果前加入一层超限判断

image.png

var reverse = function(x) {
    let result = 0
    
    while ( x !== 0) {
        const num = x % 10
        x = parseInt(x / 10)
        result = result * 10 + num
    }
    if(result > Math.pow(2, 31) - 1 || result < -Math.pow(2, 31)) {
        return 0
    }
    return result
};

总结

这道题目理清思路就很简单,但是刚做的时候还是感觉会但是写不出来,唉。。

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情