iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 4
0
自我挑戰組

[LeetCode with JavaScript] 一起來刷 LeetCode吧 ~~~ (ノ>ω<)ノ系列 第 4

[LeetCode with JavaScript] Day 4: Reverse Integer

觀前提醒:

  1. 我預設大家已經先思考並分析過題目,沒啥想法才開始 google 找解題靈感。若無,建議每題先花 1~2 顆番茄鐘的時間來分析題目比較好。可參考番茄鐘工作法
  2. 承上,既然已經有思考過了,那我這邊直接 po 題目 + 解題想法 + code +心得 。若已經在 code 內有足夠的註解了,那我可能解題想法 & 心得的部分就不會寫太多,免得干擾你的思考。
  3. 所有解法都是已經取得系統的 Accepted,但或許不是最優解法,請多包涵。
  4. 若對於解法不太懂,可以嘗試用 Chrome 的 debugger 來試跑看看 (教學文)
  5. 最後,歡迎在下面留言指教~教學相長才會進步歐~/images/emoticon/emoticon41.gif

題目

Given a 32-bit signed integer, reverse digits of an integer.

Example 1:

Input: 123
Output: 321

Example 2:

Input: -123
Output: -321

Example 3:

Input: 120
Output: 21

Note:
Assume we are dealing with an environment which could only store integers within the 32-bit signed integer range: [−231, 231 − 1]. For the purpose of this problem, assume that your function returns 0 when the reversed integer overflows.

解題想法

這題基本上,我是把每個字元拆開後存成 Array,再依題目要求一步步處理,詳情請參考下方 CODE 內的註解

CODE

/**
 * @param {number} x
 * @return {number}
 */
var reverse = function (x) {
  // 先把 數字轉成Str,再把它逐一位數切開。
  let xArray = x.toString().split("");
  // i為第0位字元,j為最後一位字元。
  let i = 0;
  let j = xArray.length - 1;
  // 宣告一個 temp,這是拿來做兩數交換時,可以暫存數值的口袋。
  let temp = "";
  //處理 edge case: 若首位為 "-",則 i 從 第 1 位字元開始。
  if (xArray[0] === "-") {
    i = 1;
  }
  // 當 i < j時,把頭尾兩數對調,然後頭指針+1,尾指針-1,兩者繼續對調。 
  while (i < j) {
    temp = xArray[i];
    xArray[i] = xArray[j];
    xArray[j] = temp;
    i++;
    j--;
  }
  // 把對調完的 xArray,用 join("")直接拼成答案。 
  let answer = xArray.join("");
  // 處理 edge case: 若答案大於 2 ** 31 - 1 or 小於 (-2) ** 31,直接return 0。
  // 承上,反之則直接 return answer。
  if (answer > 2 ** 31 - 1 || answer < (-2) ** 31) {
    return 0;
  } else {
    return answer;
  }
};

心得

基本上,大家跟著我的 code 跟註解,一行行讀下來的話,應該不至於不好理解,若不理解者,可以使用 chrome 裡面的 debugger 功能(教學文),試著自己跑跑看~有問題煩請在下面留言發問歐~
謝謝大家收看/images/emoticon/emoticon29.gif


上一篇
[LeetCode with JavaScript] Day 3: Rotate Image
下一篇
[LeetCode with JavaScript] Day 5: String to Integer (atoi)
系列文
[LeetCode with JavaScript] 一起來刷 LeetCode吧 ~~~ (ノ>ω<)ノ30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

1 則留言

0
bryanchu10
iT邦新手 5 級 ‧ 2021-10-07 12:06:26

如果運算環境只能儲存 32-bit 以下的整數,那在您的算法中,組合出 answer 的時候,應該就已經溢位了?

我要留言

立即登入留言