1. 题目描述
给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
注意:假设我们的环境只能存储得下 32 位的有符号整数,则其数值范围为 [−231, 231 − 1]。请根据这个假设,如果反转后整数溢出那么就返回 0。
2. 解题思路
可以先忽略数字的正负,因为正负不会影响最后结果,最后加上就可以。
(1)首先判断输入的是否是数字
(2)将数字转换为字符串,去除正负号,使用字符串的翻转函数对其进行操作
(3)将得到的结果添加正负号
(4)返回最后的结果
3. 代码实现
/**
* @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
}
};