हमें एक जावास्क्रिप्ट फ़ंक्शन लिखने की आवश्यकता है जो एक सकारात्मक पूर्णांक में, 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