一.给出一个 32 位的有符号整数,你需要将这个整数中每位上的数字进行反转。溢出返回 0。
-123 // -321
二. 思路
/**
* js Number范围 正负2的53次方Math.pow(2,53) 直接返回0
* x是负数的情况
* x反转后开头是0的情况
* 数组反转 整数-字符串-数组 数组-字符串-整数
*/
/**
* @param {number} x
* @return {number}
*/
var reverse = function (x) {
if (x == null || x == undefined || x > -10 && x < 10) return x;
let res;
if (x < -Math.pow(2, 53) || x > Math.pow(2, 53)) {
res=0;
}
let str = '';
if(x<0){ str=String(-x)}else{str = String(x)}
let arr = str.split('');
arr.reverse();
if(arr[0]==0){ arr.shift()};
str = arr.join('');
res = Number(str);
if(x<0){res=-res;}
if( res<-Math.pow(2,31)|| res>Math.pow(2,31)-1){res=0;}
return res;
};
三.知识点
js中Number值范围是【】正负 Math.pow(2,53) 即2的53次方=9007199254740992 (16位)
字符串变数组str.split('')
数组变字符串 arr.join('')
原数组上 (栈)
pop() <------[ 3 ]<-----push()
[ 2 ]
shift() <----- [ 1 ]<-----unshift()