কম্পিউটার

পাইথনে এক জোড়া বিট অদলবদল করার পর 1s-এর দীর্ঘতম সংখ্যা খুঁজে বের করার প্রোগ্রাম


ধরুন আমাদের একটি বাইনারি স্ট্রিং s আছে। যদি আমরা স্ট্রিংটিতে সর্বাধিক একজোড়া অক্ষর অদলবদল করতে পারি, তাহলে আমাদের 1s-এর দীর্ঘতম সংলগ্ন সাবস্ট্রিং-এর ফলস্বরূপ দৈর্ঘ্য খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি s ="1111011111" এর মত হয়, তাহলে আউটপুট হবে 9, কারণ আমরা s[4] এবং s[9] অদলবদল করে 9টি পরপর 1s পেতে পারি।

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

  • l :=0, cnt :=0, উত্তর :=0
  • র জন্য 0 থেকে s আকারের পরিসরে, করুন
    • cnt :=cnt + (1 যখন s[r] একই হয় "0" অন্যথায় 0)
    • যদি cnt> 1, তারপর
      • cnt :=cnt - (1 যখন s[l] একই হয় "0" অন্যথায় 0)
      • l :=l + 1
    • উত্তর :=সর্বাধিক উত্তর এবং (r - l + 1)
  • সর্বনিম্ন উত্তর প্রদান করুন এবং 1 এর মধ্যে s

আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -

উদাহরণ

class Solution:
   def solve(self, s):
      l = 0
      cnt = 0
      ans = 0
      for r in range(len(s)):
         cnt += s[r] == "0"
         if cnt > 1:
            cnt -= s[l] == "0"
            l += 1
         ans = max(ans, r - l + 1)
      return min(ans, s.count("1"))
ob = Solution()
s = "1111011111"
print(ob.solve(s))

ইনপুট

"1111011111"

আউটপুট

9

  1. পাইথনে মার্জ করার পরে ন্যূনতম সংখ্যার রঙগুলি খুঁজে বের করার প্রোগ্রামটি থাকে

  2. পাইথনে K বৃদ্ধির পর দীর্ঘতম সমতুল্য সাবলিস্ট খুঁজতে প্রোগ্রাম

  3. পাইথনে সাজানো তালিকায় অনন্য পূর্ণসংখ্যার সংখ্যা খুঁজে বের করার প্রোগ্রাম

  4. পাইথনে এক নম্বর থেকে অন্য নম্বর তৈরি করার জন্য প্রয়োজনীয় ন্যূনতম সংখ্যক অপারেশন খুঁজে বের করার প্রোগ্রাম