一. 题目描述
给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果。如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0。假设环境不允许存储 64 位整数(有符号或无符号)。
输入:x = 120
输出:21
输入:x = -123
输出:-321
输入:x = 0
输出:0
二、思路
这道题有点小坑,就是最后需要处理数的范围哈哈,属于是没有看好题目了,他的原理就是需要把该整数先取绝对值,再转化为字符串,用split()方法将其分割为一个数组,再反转,最后把他拼接回去,把符号还给他,然后就是处理整数的范围了
三、代码展示
var reverse = function(x) {
var nums = String(Math.abs(x)) // 返回绝对值 再转化为String对象
var arr = nums.split('') // 分割成数组
nums = arr.reverse().join('') // 再反转数组,最后重新拼接
x = x>0?nums:-nums // 判断正负 还原符号
if(x > Math.pow(2,31)-1 || x < -Math.pow(2,31)){
return 0
}else{
return x
}
};
四、回顾
如果发现自己对数组对象的原生方法不熟悉,可以去看看小糖往期的博客~干货食用链接:js数组对象