题目描述
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:
假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
解题思路
我们可以先忽略数字的正负,因为正负不会影响最后结果,最后加上就可以。
(1)首先判断输入的是否是数字
(2)将数字转换为字符串,去除正负号,使用字符串的翻转函数对其进行操作
(3)将得到的结果添加正负号
(4)返回最后的结果
这里顺便复习一下数组和字符串的几个方法:
-
String()
: 是将其他类型数据转换为字符串 -
split()
:将一个字符串分隔成字符串数组 -
reverse()
:用于翻转数组中的元素 -
join()
:将数组元素转化为字符串,之间用符号分隔 -
slice()
:从已有的数组中返回选定的元素,第一个参数为开始元素索引,第二个参数为结束元素索引
代码实现
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
if(typeof x !='number'){
return;
}
const MIN = -2147483648;
const MAX = 2147483647;
const res=x>=0?String(x).split('').reverse().join(''):String(x).slice(1).split('').reverse().join('');
const result = x>=0?parseInt(res):0-parseInt(res);
if(result>=MIN && result<=MAX){
return result;
}else{
return parseInt(0); // 不在范围之内时返回0
}
};
提交结果