ধরুন আমাদের একটি বাইনারি স্ট্রিং 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