मान लीजिए कि हमारे पास एक स्ट्रिंग है जिसमें संतुलित कोष्ठक "(" और ")" हैं, हमें उन्हें संतुलित समूहों की अधिकतम संख्या में विभाजित करना होगा।
इसलिए, यदि इनपुट "(()())()(())" जैसा है, तो आउटपुट ['(()())', '()', '(())']<होगा। /पी>
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- अस्थायी:=रिक्त स्ट्रिंग
- समूह :=एक नई सूची
- गिनती :=0
- प्रत्येक वर्ण b in s के लिए, करें
- यदि गिनती 0 के समान है और अस्थायी का आकार> 0 है, तो
- समूहों के अंत में अस्थायी डालें
- अस्थायी:=रिक्त स्ट्रिंग
- अस्थायी:=अस्थायी संयोजन ख
- यदि b '(' के समान है, तो
- गिनती :=गिनती + 1
- अन्यथा,
- गिनती :=गिनती - 1
- यदि गिनती 0 के समान है और अस्थायी का आकार> 0 है, तो
- समूहों के अंत में अस्थायी डालें
- वापसी समूह
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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))
इनपुट
"(()())()(())"
आउटपुट
['(()())', '()', '(())']