আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি ধনাত্মক পূর্ণসংখ্যাতে, n বলুন। ফাংশনটি n-এর বাইনারি উপস্থাপনায় যেকোনো দুটি সংলগ্ন 1-এর মধ্যে দীর্ঘতম দূরত্ব খুঁজে বের করে ফেরত দিতে হবে।
যদি দুটি সন্নিহিত 1 না থাকে, তাহলে আমাদের 0 ফেরত দিতে হবে।
দুটি 1 সংলগ্ন হয় যদি শুধুমাত্র 0 থাকে তাদের আলাদা করে (সম্ভবত 0 এর নয়)। দুটি 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