मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग है। अब हम एक ऑपरेशन पर विचार करते हैं, जहां हम स्ट्रिंग को दो गैर-रिक्त सबस्ट्रिंग s1 और s2 में विभाजित करते हैं। इस विभाजन का स्कोर s1 में "0" की गिनती और s2 में "1" की गिनती का योग है। हमें वह अधिकतम अंक प्राप्त करना होगा जो हम प्राप्त कर सकते हैं।
इसलिए, यदि इनपुट s ="011001100111" जैसा है, तो आउटपुट 8 होगा, क्योंकि हम "01100" + "110111" जैसे स्ट्रिंग को विभाजित कर सकते हैं। फिर, स्कोर 3 + 5 =8 है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
वाले :="1" की संख्या s
-
शून्य :=0
-
उत्तर :=0
-
मैं के लिए 0 से s - 2 के आकार की सीमा में, करें
-
अगर s[i] "0" के समान है, तो
-
शून्य :=शून्य + 1
-
-
अन्यथा,
-
वाले :=वाले - 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