मान लीजिए कि हमारे पास ब्रैकेट (गोल, घुंघराले और वर्ग) की एक स्ट्रिंग है, हमें यह जांचना होगा कि ब्रैकेट संतुलित (अच्छी तरह से गठित) हैं या नहीं।
इसलिए, यदि इनपुट s ="([() ()] {[]}) ()" जैसा है, तो आउटपुट सही होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- स्टैक:=एक नई सूची
- d :=की-वैल्यू पेयर ('}', '{'),(')','('), (']', '[') के साथ हैश मैप
- प्रत्येक वर्ण c in s के लिए, करें
- यदि c '}] में से कोई एक है)', तो
- यदि स्टैक खाली है या स्टैक का शीर्ष d[c] के समान नहीं है, तो
- झूठी वापसी
- स्टैक से पॉप
- यदि स्टैक खाली है या स्टैक का शीर्ष d[c] के समान नहीं है, तो
- अन्यथा,
- c को स्टैक में पुश करें
- यदि c '}] में से कोई एक है)', तो
- स्टैक खाली होने पर सही लौटें, अन्यथा गलत
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution:
def solve(self, s):
stack = []
d = {'}': '{',')': '(',']': '['}
for c in s:
if c in '}])':
if not stack or stack[-1] != d[c]:
return False
stack.pop()
else:
stack.append(c)
return not stack
ob = Solution()
print(ob.solve("([()()]{[]})()")) इनपुट
"([()()]{[]})()" आउटपुट
True