একটি বাইনারি স্ট্রিং s দেওয়া আছে। এটি দুটি নন-খালি সাবস্ট্রিং s1 এবং s2-এ ভাগ করুন। স্কোর = s1-এ '0'-এর সংখ্যা + s2-এ '1'-এর সংখ্যা। সর্বোচ্চ স্কোর বের করুন।
উদাহরণ
s = "011001100111" → আউটপুট: 8
বিভাজন: "01100" + "110111" → 3 + 5 = 8
এলগরিদম (O(n))
ones := s.count("1"),zeros := 0,ans := 0i = 0থেকেlen(s)-2পর্যন্ত:- যদি
s[i] == '0':zeros++ - অন্যথায়:
ones-- ans = max(ans, ones + zeros)
- যদি
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