給出一個(gè) 32 位的有符號(hào)整數(shù),你需要將這個(gè)整數(shù)中每位上的數(shù)字進(jìn)行反轉(zhuǎn)。
示例1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
示例 3:
輸入: 120
輸出: 21
注意:
假設(shè)我們的環(huán)境只能存儲(chǔ)得下 32 位的有符號(hào)整數(shù),則其數(shù)值范圍為 [?231, 231 ? 1]。請(qǐng)根據(jù)這個(gè)假設(shè),如果反轉(zhuǎn)后整數(shù)溢出那么就返回 0。
實(shí)現(xiàn)代碼如下:
/**
* @param {number} x
* @return {number}
*/
var reverse = function (x) {
// 判斷當(dāng)前是否為數(shù)字
if(!x && isNaN(x)) return 0
// 數(shù)字轉(zhuǎn)字符在截取為數(shù)組
let arr = x.toString().split("")
if (arr[0] === '-') {
delete arr[0]
// 數(shù)組倒敘轉(zhuǎn)字符串再轉(zhuǎn)為數(shù)字
let num = Number(arr.reverse().join(''))
if (num >= (Math.pow(2, 31)) || num <= (Math.pow(2, -31))) {
return 0
} else {
return '-' + num
}
} else {
// 數(shù)組倒敘轉(zhuǎn)字符串再轉(zhuǎn)為數(shù)字
let num = Number(arr.reverse().join(''))
if (num >= (Math.pow(2, 31)) || num <= (Math.pow(2, -31))) {
return 0
} else {
return num
}
}
};