আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি ধনাত্মক পূর্ণসংখ্যাতে, 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