題目描述
題目難度:中等
給出一個 32 位的有符號整數,你需要將這個整數中每位上的數字進行反轉。
示例 1:
輸入: 123
輸出: 321
示例 2:
輸入: -123
輸出: -321
事例3:
輸入: 120
輸出: 21
注意:
假設我們的環境只能存儲得下 32 位的有符號整數,則其數值範圍爲 [−231, 231 − 1]。請根據這個假設,如果反轉後整數溢出那麼就返回 0。
個人解題思路
本題還是比較簡單的,只要注意下32位整數溢出就可以
只是做字符串的反轉,最後轉成數字即可,
可以用數據的reserve但是我覺得數組再拼裝可能要額外的耗時,我就自己用字符串實現了一下
代碼如下
/**
* @param {number} x
* @return {number}
*/
var reverse = function(x) {
let max = Math.pow(2, 31) - 1;
let min = -Math.pow(2, 31);
let symbolFlag = x > 0? true: false;
if(!symbolFlag) x = -x;
let stringX = x.toString();
let resultFront = '';
let resultLater = '';
for(let i = 0; i < stringX.length / 2; i ++) {
resultLater = stringX[i] + resultLater;
if(i !== stringX.length - 1 - i) {
resultFront += stringX[stringX.length- 1 - i];
}
}
let result;
if(symbolFlag) {
result = Number(resultFront + resultLater);
}else {
result = -Number(resultFront + resultLater);
}
if(result >= max || result <= min) {
return 0;
}
return result;
};
思考&實現總用時:約10分鐘
運行結果
執行結果:通過
執行用時 :76 ms, 在所有 javascript 提交中擊敗了96.77%的用戶
內存消耗 :35.8 MB, 在所有 javascript 提交中擊敗了37.89%的用戶
看了一下最優解法,基本上也都差不多,差距可能就是leetcode提交計算的誤差導致。