题目描述:
自己写的算法:
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
x += '';
let reverseStr = '';
// 判断符号
if (x.charAt(0) === '-' || x.charAt(0) === '+') {
reverseStr += x[0];
x = x.substr(1);
}
for(let i = x.length - 1; i >= 0; i--) {
reverseStr += x[i];
}
var reverseNum = Number(reverseStr);
// 判断溢出
if (reverseNum > Math.pow(2, 31) - 1 || reverseNum < Math.pow(2, 31) * -1) {
return 0;
} else {
return reverseNum;
}
};
一种更简洁的算法:
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
let sign = Math.sign(x); // 符号
let res = (Math.abs(x) + '').split('').reverse().join('') * sign;
if (res > Math.pow(2, 31) - 1 || res < Math.pow(2, 31) * -1) {
res = 0;
}
return res
};