给定一个 32 位有符号整数,将整数中的数字进行反转。
示例 1:
输入: 123
输出: 321
示例 2:
输入: -123
输出: -321
示例 3:
输入: 120
输出: 21
方法一:
将字符串转换为数组,再转为字符串
/** * @param {number} x * @return {number} */
var reverse = function(x) {
let max = Math.pow(2,31) -1;
let min = Math.pow(-2,31);
if(x > 0){
x = String(x);
x = x.split('');
x = x.reverse();
x = x.join('');
x = parseInt(x);
if(x > max ){
return 0;
}
}else if(x < 0){
x = String(x);
x = x.split('');
x = x.reverse();
x = x.join('');
x = 0 - parseInt(x)
if(x < min ){
return 0;
}
}
return x;
};
防法二:
直接写一个数组的reverse方法。
function strReverse(str) {
let temp = "";
let len = str.length - 1;
for(let i = len ; i >= 0 ; i--){
temp = temp + str[i];
}
return parseInt(temp);
}
var reverse = function(x) {
let max = Math.pow(2,31) -1;
let min = Math.pow(-2,31);
if(x > 0){
x = String(x);
x = strReverse(x);
if(x > max ){
return 0;
}
}else if(x < 0){
x = String(x);
x = strReverse(x)
x = 0 - x;
if(x < min ){
return 0;
}
}
return x;
};
总结:
个人感觉,计算大数是一个比较麻烦的事,如果不记得api
就难办了。
let max = Math.pow(2,31) -1;
let min = Math.pow(-2,31);