मान लीजिए हमारे पास एक बाइनरी स्ट्रिंग s है। अब एक ऑपरेशन पर विचार करें जहां हम एक बिट चुनते हैं और उसके मान को 0 से 1 या इसके विपरीत फ्लिप करते हैं। हमें उस न्यूनतम ऑपरेशन की संख्या ढूंढनी है जिससे एक ऐसी स्ट्रिंग मिले जिसमें तीन समान लगातार बिट्स न हों।
उदाहरण के लिए, यदि इनपुट है s = "10011100", तो आउटपुट 1 होगा, क्योंकि हम इंडेक्स 4 पर 1 को 0 में फ्लिप करके स्ट्रिंग को "10010100" बना सकते हैं जहां कोई तीन लगातार समान बिट्स नहीं हैं।
समाधान दृष्टिकोण
- l := 0, count := 0
- जब तक l < s का आकार:
- r := l
- जब तक r < s का आकार और s[r], s[l] के समान है:
- r := r + 1
- count := count + ((r - l) // 3) का फ्लोर मान
- l := r
- count लौटाएं
उदाहरण कोड
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