मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग है। यदि हम स्ट्रिंग में वर्णों की अधिकतम एक जोड़ी को स्वैप कर सकते हैं, तो हमें 1s के सबसे लंबे सन्निहित विकल्प की परिणामी लंबाई ज्ञात करनी होगी।
इसलिए, यदि इनपुट s ="1111011111" जैसा है, तो आउटपुट 9 होगा, क्योंकि हम s[4] और s[9] को लगातार 9 1s प्राप्त करने के लिए स्वैप कर सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एल:=0, सीएनटी:=0, उत्तर:=0
- r के लिए 0 से लेकर s के आकार के लिए, करें
- cnt :=cnt + (1 जब s[r] "0" के समान हो अन्यथा 0)
- अगर cnt> 1, तो
- cnt :=cnt - (1 जब s[l] "0" के समान हो अन्यथा 0)
- एल :=एल + 1
- उत्तर :=अधिकतम उत्तर और (r - l + 1)
- न्यूनतम उत्तर और 1 सेकंड में बार-बार आना
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, s): l = 0 cnt = 0 ans = 0 for r in range(len(s)): cnt += s[r] == "0" if cnt > 1: cnt -= s[l] == "0" l += 1 ans = max(ans, r - l + 1) return min(ans, s.count("1")) ob = Solution() s = "1111011111" print(ob.solve(s))
इनपुट
"1111011111"
आउटपुट
9