কম্পিউটার

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


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

সুতরাং, যদি ইনপুটটি s ="1010110001" এর মত হয়, তাহলে আউটপুট হবে 4, যেমন আমরা সূচী 3-এ উপস্থিত শূন্যটিকে ফ্লিপ করি, তাহলে আমরা "1011110001" স্ট্রিং পাব, এখানে 1s-এর দীর্ঘতম সাবস্ট্রিং-এর দৈর্ঘ্য হল 4 .

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

  • n :=s এর আকার
  • উত্তর :=0, ones :=0, বাম :=0, ডান :=0
  • যখন ডানে
  • যদি s[ডান] "1" এর মত হয়, তাহলে
    • ones :=ones + 1
  • যখন ডান - বাম + 1 - ones> 1, do
    • সরান :=s[বাম]
    • যদি রিমুভ করা হয় "1" এর মতো, তাহলে
      • ones :=ones - 1
    • বাম :=বাম + 1
  • উত্তর :=সর্বাধিক উত্তর এবং (ডান - বাম + 1)
  • ডান:=ডান + 1
  • উত্তর ফেরত দিন
  • উদাহরণ

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

    def solve(s):
       n = len(s)
       ans = ones = left = right = 0
       while right < n:
          if s[right] == "1":
             ones += 1
          while right - left + 1 - ones > 1:
             remove = s[left]
             if remove == "1":
                ones -= 1
             left += 1
          ans = max(ans, right - left + 1)
          right += 1
       return ans
    
    s = "1010110001"
    print(solve(s))

    ইনপুট

    "1010110001"

    আউটপুট

    4

    1. পাইথনে একটি বাইনারি গাছের দীর্ঘতম ধারাবাহিক পথের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

    2. পাইথনে বাইনারি গাছের দীর্ঘতম বিকল্প পথের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

    3. পাইথনে ধারাবাহিক সাধারণ অক্ষর সহ সাবস্ট্রিংয়ের দৈর্ঘ্য খুঁজে বের করার প্রোগ্রাম

    4. পাইথনে এক অদলবদল সহ লেক্সিকোগ্রাফিকভাবে সবচেয়ে ছোট স্ট্রিং খুঁজে বের করার প্রোগ্রাম