LeetCode7整數反轉(javascript解析)

題目描述

題目難度:中等

給出一個 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提交計算的誤差導致。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章