JavaScript中二進位制數1之間最長距離


我們需要編寫一個JavaScript函式,該函式接收一個正整數n作為輸入。該函式應該找到並返回n的二進位制表示中任意兩個相鄰的1之間最長的距離。

如果沒有兩個相鄰的1,則應返回0。

如果兩個1之間只有0(也可能沒有0)隔開,則這兩個1是相鄰的。兩個1之間的距離是它們位位置的絕對差值。例如,“1001”中的兩個1之間的距離為3。

例如:

如果輸入是22,則輸出應為2,

因為:

  • 22的二進位制程式碼是10110
  • 第一對相鄰的1是“10110”,距離為2。
  • 第二對相鄰的1是“10110”,距離為1。
  • 答案是這兩個距離中最大的一個,即2。

請注意,“10110”不是有效對,因為有兩個1分隔了兩個下劃線的1。

示例

const num = 22;
const binaryGap = (num = 1) => {
   let last = -1;
   let ans = 0; // go through every bit
   for (let i = 0; i < 32; i++) {
      // check whether the bit is `1`. //
      if true, calculate the longest distance with
      // previous `1` if `1` was previously found.
      if ((num >> i) & 1 > 0) {
         if (last >= 0) {
            ans = Math.max(ans, i - last);
         }
         last = i;
      }
   }
   return ans;
};
console.log(binaryGap(num));

輸出

控制檯的輸出將是:

2

更新於:2020年11月21日

317 次瀏覽

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告