हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो एक सकारात्मक पूर्णांक में, n कहें। फ़ंक्शन को n के बाइनरी प्रतिनिधित्व में किन्हीं दो आसन्न 1 के बीच की सबसे लंबी दूरी को खोजना और वापस करना चाहिए।
अगर कोई दो आसन्न 1 नहीं हैं, तो हमें 0 वापस करना होगा।
दो 1 आसन्न हैं यदि केवल 0 उन्हें अलग कर रहे हैं (संभवतः 0 नहीं)। दो 1 के बीच की दूरी उनकी बिट स्थिति के बीच पूर्ण अंतर है। उदाहरण के लिए, "1001" में दो 1 की दूरी 3 है।
उदाहरण के लिए -
यदि इनपुट 22 है, तो आउटपुट 2 होना चाहिए,
क्योंकि,
- 22 का बाइनरी कोड 10110 है
- 1 का पहला आसन्न जोड़ा 2 की दूरी के साथ "10110" है।
- 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