কম্পিউটার

পাইথনে বাইনারি গ্যাপ


ধরুন আমাদের একটি ধনাত্মক পূর্ণসংখ্যা N আছে, N-এর বাইনারি উপস্থাপনায় আমাদের দুটি পরপর 1 এর মধ্যে সবচেয়ে দীর্ঘতম দূরত্ব খুঁজে বের করতে হবে। যদি কোনো দুই-পরপর 1 না থাকে, তাহলে 0 ফেরত দিন।

সুতরাং, যদি ইনপুট 22 এর মত হয়, তাহলে আউটপুট হবে 2, যেমন বাইনারিতে 22 হল 10110। 22-এর বাইনারি উপস্থাপনে তিনটি এবং 1 এর পরপর দুটি জোড়া রয়েছে। 1-এর প্রথম পরপর জোড়ার দূরত্ব 2, তারপর 1-এর দ্বিতীয় পরপর জোড়ার দূরত্ব 1। উত্তর হবে এই দুটি দূরত্বের মধ্যে সবচেয়ে বড়, যা হল 2।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • K :=N-এর বাইনারি উপস্থাপনার বিটের একটি তালিকা তৈরি করুন
  • সর্বোচ্চ :=0, C :=0, S :=0
  • পতাকা :=মিথ্যা
  • আমি 0 থেকে K আকারের রেঞ্জের জন্য, কর
    • যদি K[i] হয় '1' এবং C হয় 0 এবং পতাকা হয় False, তাহলে
      • C:=i
      • পতাকা :=সত্য
    • অন্যথায় যখন K[i] হয় '1' এবং ফ্ল্যাগ, তখন
      • S:=i
      • যদি Max
      • সর্বোচ্চ :=|S-C|
    • C:=S
  • ম্যাক্স রিটার্ন করুন
  • আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

    উদাহরণ

    class Solution:
       def binaryGap(self, N):
          B = bin(N).replace('0b','')
          K = str(B)
          K = list(K)
          Max = 0
          C = 0
          S =0
          Flag =False
          for i in range(len(K)):
             if K[i] is '1' and C is 0 and Flag is False:
                C=i
             Flag = True
             elif K[i] is '1' and Flag:
                S=i
                if Max<abs(S-C):
                   Max = abs(S-C)
                   C=S
          return Max
    ob = Solution()
    print(ob.binaryGap(22))

    ইনপুট

    22

    আউটপুট

    2

    1. পাইথনে বাইনারি ট্রি কালারিং গেম

    2. পাইথনে পাথ ইন জিগজ্যাগ লেবেলযুক্ত বাইনারি ট্রি

    3. পাইথনে বাইনারি ট্রি ব্যাস

    4. পাইথনে বাইনারি ট্রি ইনভার্ট করুন