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

পাইথনে বাইনারি স্ট্রিং দুটি ভাগে ভাগ করে সর্বোচ্চ স্কোর বের করার প্রোগ্রাম

একটি বাইনারি স্ট্রিং s দেওয়া আছে। এটি দুটি নন-খালি সাবস্ট্রিং s1 এবং s2-এ ভাগ করুন। স্কোর = s1-এ '0'-এর সংখ্যা + s2-এ '1'-এর সংখ্যা। সর্বোচ্চ স্কোর বের করুন।

উদাহরণ

s = "011001100111" → আউটপুট: 8

বিভাজন: "01100" + "110111" → 3 + 5 = 8

এলগরিদম (O(n))

  1. ones := s.count("1"), zeros := 0, ans := 0
  2. i = 0 থেকে len(s)-2 পর্যন্ত:
    • যদি s[i] == '0': zeros++
    • অন্যথায়: ones--
    • ans = max(ans, ones + zeros)
  3. ans রিটার্ন করুন।

পাইথন কোড

def solve(s):
    ones = s.count("1")
    zeros = 0
    ans = 0
    for i in range(len(s) - 1):
        if s[i] == "0":
            zeros += 1
        else:
            ones -= 1
        ans = max(ans, ones + zeros)
    return ans

s = "011001100111"
print(solve(s))  # আউটপুট: 8

ইনপুট / আউটপুট

"011001100111"
8
  1. পাইথনে বাইনারি ট্রিতে দুটি নোডের মধ্যকার দূরত্ব খুঁজে বের করার প্রোগ্রাম

  2. পাইথনে সব সম্ভাব্য বৈধ পথ থেকে সর্বোচ্চ স্কোর বের করার প্রোগ্রাম

  3. পাইথনে বাইনারি ট্রির সর্বাধিক প্রস্থ (Maximum Width) বের করার প্রোগ্রাম

  4. দুই স্ট্রিং থেকে অনকমন ওয়ার্ড বের করার পাইথন প্রোগ্রাম