LeetCode_7_整數(shù)反轉(zhuǎn)_JS

給你一個(gè) 32 位的有符號(hào)整數(shù) x ,返回將 x 中的數(shù)字部分反轉(zhuǎn)后的結(jié)果。

如果反轉(zhuǎn)后整數(shù)超過(guò) 32 位的有符號(hào)整數(shù)的范圍 [?231, 231 ? 1] ,就返回 0。

假設(shè)環(huán)境不允許存儲(chǔ) 64 位整數(shù)(有符號(hào)或無(wú)符號(hào))。

示例 1:
輸入:x = 123
輸出:321

示例 2:
輸入:x = -123
輸出:-321

示例 3:
輸入:x = 120
輸出:21

示例 4:
輸入:x = 0
輸出:0

來(lái)源:力扣(LeetCode)
鏈接:https://leetcode-cn.com/problems/reverse-integer
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。

思路一:

轉(zhuǎn)換成數(shù)組,然后反轉(zhuǎn)數(shù)組,這個(gè)方法太麻煩了,不去實(shí)現(xiàn)了

思路二:

俗話說(shuō),學(xué)好數(shù)理化,走遍天下都不怕。所以我們用數(shù)學(xué)的方法來(lái)解決這道題。我們對(duì)數(shù)字依次取模,就可以得到倒序的結(jié)果了
假設(shè)數(shù)字num = 20001128,result = 0

  • num % 10 = 8, result = 8,num = (num / 10) | 0 也就是2000112
  • num % 10 = 2, result = 8*10 + 2也就是82, num = (num / 10) |0 也就是200011
    依次往下計(jì)算,最終可以得到結(jié)果,最后的結(jié)果reuslt | 0如果不等于reuslt, 說(shuō)明超出了范圍,返回0。
    這里的 | 0 就很妙,表示取整,超過(guò)32位的整數(shù)轉(zhuǎn)換結(jié)果不等于自身,就可以用來(lái)判斷是否溢出了。

代碼實(shí)現(xiàn)

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function(x) {
    let result = 0;
    while(x !== 0) {
        result = result * 10 + x % 10;
        x = (x / 10) | 0;
    }
    return (result | 0) === result ? result : 0;
};
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容