1. 需求介紹
給出一個 32 位的有符號整數,需要將這個整數中每位上的數字進行反轉。
注意:
假設我們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢出那麼就返回 0。
反轉什麼鬼😳 舉個栗子👇
輸入: 123
輸出: 321
輸入: -123
輸出: -321
輸入: 120
輸出: 21
2. 思路
把拿到的數字變爲數組,然後從最後一位依次push到新數組中,最後把新數組再變爲數字返回
- 如果是有符號的,那麼將使用數組中的unshift方法(向數組來頭追加)
- 如果得到新的數字大於32位,那麼需要返回0(math的中pow方法來求範圍)
3. 代碼實現
/*
* @param {number} x
* @return {number}
*/
var reverse = function (x) {
// Math.pow(2,3) => 8
let min = Math.pow(-2, 31),
max = Math.pow(2, 31) - 1; //最大最小值的範圍
x = x.toString().split(''); //把x轉爲數組
let y = []; //定義一個新數組來存儲反轉的值
for (let i = x.length; i >= 0; i--) { //從最後以爲開始遍歷
if (i === 0 && (x[0] == '-' || x[0] == '+')) {
//如果有加減符合,那麼追加到開頭,並且跳出循環
y.unshift(x[0]);
break;
}
y.push(x[i]);
}
y = Number(y.join('')); //把得到的新數組轉爲數字
return y > min && y < max ? y : 0; //如果滿足32的範圍,那麼返回反轉後的值
};
4. 測試
console.log(reverse(-123)); // -321
console.log(reverse(+123)); // 321
console.log(reverse(123456789)); // 987654321
console.log(reverse(12345678912)); // 0
5. 總結
通過上面一個簡簡單單的小例子,我們可以看出JavaScript中數組、字符串、Math等等這些方法都是需要熟記於心的,尤其在寫項目的時候使用這些方法是有助於我們快速開發的✊