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
廣告