কম্পিউটার টিউটোরিয়াল

পাইথনে এক জোড়া বিট সওয়াপ করে সবচেয়ে লম্বা ১-র সাবস্ট্রিং বের করার প্রোগ্রাম


মান লক্ষ্য করুন আমাদের কাছে একটি বাইনারি স্ট্রিং s আছে। যদি আমরা স্ট্রিংয়ের সর্বোচ্চ এক জোড়া ক্যারেক্টার সওয়াপ করতে পারি, তবে ফলস্বরূপ সবচেয়ে লম্বা যেকোনো ১-র সাবস্ট্রিংর দৈর্ঘ্য কত হবে তা বের করতে হবে।

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

সমাধানের ধাপসমূহ:
  • l := 0, cnt := 0, ans := 0
  • r কে ০ থেকে len(s) পর্যন্ত লুপ চালান:
    • cnt := cnt + (1 if s[r] == "0" else 0)
    • যদি cnt > 1 হয়, তবে:
      • cnt := cnt - (1 if s[l] == "0" else 0)
      • l := l + 1
    • ans := max(ans, r - l + 1)
  • min(ans, s.count("1")) রিটার্ন করুন।
উদাহরণ কোড
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. পাইথনে একটি সংখ্যাকে অন্য সংখ্যায় রূপান্তর করার ন্যূনতম অপারেশন বের করার প্রোগ্রাম