自己的写法:使用数组来进行反转
转成字符串,然后换成数组,最后一个个拿出来并且判断最后一位,只击败了6%的人...
var reverse = function (x) {
let arr = x.toString().split("");
let num = "";
while (arr.length) {
let a = arr.pop();
if (arr.length === 0 && a === "-") {
num = a + num;
} else {
num = num + a;
}
}
let reverseX = parseInt(num)
if (reverseX > Math.pow(2, 31) - 1 || reverseX < -Math.pow(2, 31)) {
return 0;
}
return reverseX;
};
%10
可以使用%10将最后一位取出的方法,然后加入到新的数字中,这样也不用像字符串一样判断正负了
var reverse = (x) => {
let res = 0;
while (x) {
res = res * 10 + (x % 10);
if (res > Math.pow(2, 31) - 1 || res < Math.pow(-2, 31)) {
return 0;
}
x = ~~(x / 10);
}
return res;
学到的知识
~~ => 取反两次,可以去掉小数 123 | 0 => 123 转成二进制按位或,可以去掉小数 唯一没有搞明白的是 Math.pow(2,31) | 0 = -2147483648 ? Math.pow(2,32) | 0 = 0