मान लीजिए कि हमारे पास केवल इन वर्णों '(' और ')' के साथ दो ब्रैकेट अनुक्रम 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