LeetCode題解:7. 整數(shù)反轉(zhuǎn),迭代,JavaScript,詳細(xì)注釋

原題鏈接:
https://leetcode.cn/problems/reverse-integer

解題思路:

  1. 使用result存儲(chǔ)反轉(zhuǎn)后結(jié)果,初始值為0。
  2. 每次循環(huán)取出x的個(gè)位數(shù)curr,再將x向右移動(dòng)一位。
  3. result向左移動(dòng)一位,并將curr存入result的個(gè)位數(shù)。
  4. 不斷循環(huán)直到x0,即可完成反轉(zhuǎn)。
  5. x為負(fù)數(shù)時(shí),正整數(shù)部分的反轉(zhuǎn)結(jié)果與正數(shù)是一樣的。因此可以將x都轉(zhuǎn)為正整數(shù)處理,完成后再判斷是否需要返回負(fù)數(shù)。
/**
 * @param {number} x
 * @return {number}
 */
var reverse = function (x) {
  let result = 0; // 儲(chǔ)存結(jié)果
  // 正負(fù)數(shù)除了符號(hào)以外,處理結(jié)果是一樣的,因此都轉(zhuǎn)換為正數(shù)處理
  let pos = x > 0 ? x : Math.abs(x);

  // 不斷循環(huán)直到pos為0
  while (pos !== 0) {
    // 取出pos的個(gè)位數(shù)字
    const curr = pos % 10;

    // 將result向左移動(dòng)一位,將curr存入result的個(gè)位,完成一次反轉(zhuǎn)
    result = result * 10 + curr;
    // 將pos向右移動(dòng)一位,并去除小數(shù)
    pos = Math.floor(pos / 10);

    // 如果移動(dòng)后的結(jié)果大于2^31 ? 1,則返回0
    if (result > 0x7fffffff) {
      return 0;
    }
  }

  // 判斷x的正負(fù),并返回相應(yīng)結(jié)果
  return x > 0 ? result : -result;
};
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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