मान लीजिए कि हमारे पास केवल इन वर्णों '(' और ')' के साथ दो ब्रैकेट अनुक्रम s और t हैं। हमें यह जांचना है कि s और t की संयोजित स्ट्रिंग संतुलित है या नहीं। संयोजन s द्वारा किया जा सकता है | टी या टी | स.
इसलिए, यदि इनपुट s ="() ()))", t ="() (() (" जैसा है, तो आउटपुट सही होगा क्योंकि यदि हम t | s को जोड़ते हैं, तो हमें "() मिलेगा (()(()()))", जो संतुलित है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक फ़ंक्शन को परिभाषित करें is_balanced_parenthesis() । यह स्ट्रिंग लेगा
- स्टैक:=एक नई सूची
- i के लिए 0 से लेकर स्ट्रिंग के आकार तक के लिए, करें
- यदि स्ट्रिंग [i] '(' के समान है, तो
- पुश स्ट्रिंग[i] स्टैक में
- अन्यथा,
- अगर स्टैक खाली है, तो
- झूठी वापसी
- अन्यथा,
- स्टैक से पॉप
- अगर स्टैक खाली है, तो
- यदि स्ट्रिंग [i] '(' के समान है, तो
- अगर स्टैक खाली नहीं है, तो
- झूठी वापसी
- सही लौटें
- मुख्य विधि से निम्न कार्य करें -
- यदि is_संतुलित_कोष्ठक(s + t) सत्य है, तो
- सही लौटें
- रिटर्न is_balanced_parenthesis(t + s)
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
def is_balanced_parenthesis(string): stack = [] for i in range(len(string)): if string[i] == '(': stack.append(string[i]) else: if len(stack) == 0: return False else: stack.pop() if len(stack) > 0: return False return True def solve(s, t): if is_balanced_parenthesis(s + t): return True return is_balanced_parenthesis(t + s) s = "()()))" t = "()(()(" print(solve(s, t))
इनपुट
"()()))", "()(()("
आउटपुट
True