मान लीजिए हमारे पास दो ब्रैकेट अनुक्रम s और t हैं जिनमें केवल '(' और ')' वर्ण हैं। हमें जांचना है कि s और t की संयोजित स्ट्रिंग संतुलित है या नहीं। संयोजन s + t या t + s से किया जा सकता है।
उदाहरण के लिए, यदि s = "()()))", t = "()(()(" है, तो आउटपुट True होगा क्योंकि यदि हम t + s जोड़ते हैं, तो हमें "()(()(()()))" मिलता है जो संतुलित है।
हल करने का तरीका
- is_balanced_parenthesis() फ़ंक्शन परिभाषित करें जो स्ट्रिंग लेता है
- stack := एक नई सूची
- स्ट्रिंग के प्रत्येक वर्ण के लिए:
- यदि वर्ण '(' है, तो स्टैक में push करें
- अन्यथा, यदि स्टैक खाली है तो False लौटाएं, अन्यथा स्टैक से pop करें
- यदि स्टैक खाली नहीं है, तो False लौटाएं
- True लौटाएं
- मुख्य विधि से: यदि is_balanced_parenthesis(s + t) True है तो True लौटाएं, अन्यथा 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