मान लीजिए हमारे पास एक स्ट्रिंग s है जिसमें संतुलित कोष्ठक "(" और ")" हैं, हमें उन्हें संतुलित समूहों की अधिकतम संख्या में विभाजित करना है।
उदाहरण के लिए, यदि इनपुट "(()())()(())" है, तो आउटपुट ['(()())', '()', '(())'] होगा।
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- temp := खाली स्ट्रिंग
- groups := एक नई सूची
- count := 0
- s में प्रत्येक वर्ण b के लिए करें:
- यदि count == 0 और temp का आकार > 0, तो:
- groups के अंत में temp डालें
- temp := खाली स्ट्रिंग
- temp := temp + b
- यदि b == '(', तो count := count + 1
- अन्यथा, count := count - 1
- यदि count == 0 और temp का आकार > 0, तो:
- groups के अंत में temp डालें
- groups वापस करें
उदाहरण
class Solution:
def solve(self, s):
temp = ''
groups = []
count = 0
for b in s:
if count == 0 and len(temp) > 0:
groups.append(temp)
temp = ''
temp += b
if b == '(':
count += 1
else:
count -= 1
groups.append(temp)
return groups
s = "(()())()(())"
ob = Solution()
print(ob.solve(s))
इनपुट
"(()())()(())"
आउटपुट
['(()())', '()', '(())']