前言
今天开始刷字符串的题目,还是从简单难度开始刷起。
今日题目
给你一个 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
题目分析
- 如何将一个整数反转? 我们来分析一下输入输出,比如输入是123,输出是321,由于是倒着获取,想到的是取余%
首先想要的是3,123 % 10 = 3,3是123取余的结果
第二想要的是2,12 % 10 = 2, 2是123缩小10倍后取余的结果
最后是1 注意题目要求数字的范围是超过 32 位的有符号整数的范围 [−2^31, 2^31 − 1] ,就返回 0, 所以在返回结果前加入一层超限判断
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 春招闯关活动」, 点击查看 活动详情