मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग है, अब हम एक ऑपरेशन पर विचार करते हैं जहां हम एक बिट का चयन करते हैं और इसके मान को 0 से 1 या इसके विपरीत फ्लिप करते हैं। हमें एक स्ट्रिंग प्राप्त करने के लिए आवश्यक न्यूनतम संख्या में संचालन की आवश्यकता है जिसमें तीन समान लगातार बिट्स न हों।
इसलिए, यदि इनपुट s ="10011100" जैसा है, तो आउटपुट 1 होगा, क्योंकि हम स्ट्रिंग को "10010100" बनाने के लिए इंडेक्स 4 पर 1 से 0 बिट फ्लिप कर सकते हैं, लगातार तीन समान बिट्स नहीं हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- l :=0, गिनती :=0
- जबकि l
- r :=l
- जबकि r
- r :=r + 1
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(s): l = 0 count = 0 while l < len(s): r = l while r < len(s) and s[r] == s[l]: r += 1 count += (r - l) // 3 l = r return count s = "10011100" print(solve(s))
इनपुट
"10011100"
आउटपुट
1