কম্পিউটার

পাইথনে বাইনারি স্ট্রিংগুলিকে দুটি অংশে বিভক্ত করে সর্বাধিক স্কোর খোঁজার প্রোগ্রাম


ধরুন আমাদের একটি বাইনারি স্ট্রিং s আছে। এখন একটি অপারেশন বিবেচনা করা যাক, যেখানে আমরা স্ট্রিংটিকে দুটি অ-খালি সাবস্ট্রিং s1 এবং s2 এ বিভক্ত করেছি। এই বিভাজনের স্কোর হল s1 এ "0" গণনার যোগফল এবং s2 এ "1" গণনার যোগফল। আমাদের সর্বোচ্চ স্কোর খুঁজে বের করতে হবে।

সুতরাং, যদি ইনপুটটি s ="011001100111" এর মতো হয়, তাহলে আউটপুট হবে 8, কারণ আমরা স্ট্রিংটিকে "01100" + "110111" এর মতো বিভক্ত করতে পারি। তারপর, স্কোর হল 3 + 5 =8।

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

  • ones :=s তে "1" এর সংখ্যা

  • শূন্য :=0

  • উত্তর :=0

  • i এর জন্য 0 থেকে s - 2 এর আকারের মধ্যে, করুন

    • যদি s[i] "0" এর মত হয়, তাহলে

      • শূন্য :=শূন্য + 1

    • অন্যথায়,

      • ones :=ones - 1

    • উত্তর :=সর্বাধিক উত্তর এবং (একটি + শূন্য)

  • উত্তর ফেরত দিন

উদাহরণ

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

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))

ইনপুট

"011001100111"

আউটপুট

8

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

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

  3. পাইথনে একটি বাইনারি গাছের সর্বাধিক প্রস্থ খুঁজে বের করার প্রোগ্রাম

  4. দুটি স্ট্রিং থেকে অস্বাভাবিক শব্দ খুঁজে পেতে পাইথন প্রোগ্রাম