ধরুন আমাদের বন্ধনীর একটি স্ট্রিং (গোলাকার, কোঁকড়া এবং বর্গাকার) আছে, আমাদের পরীক্ষা করতে হবে যে বন্ধনীগুলি সুষম (সুগঠিত) কি না।
সুতরাং, যদি ইনপুটটি s ="([()()]{[]})()" এর মত হয়, তাহলে আউটপুট হবে True
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- স্ট্যাক :=একটি নতুন তালিকা
- d :=কী-মান জোড়া সহ একটি হ্যাশ মানচিত্র ('}', '{'),('),'('), (']', '[')
- প্রতিটি অক্ষরের জন্য c s, do
- যদি c '}])' এর যেকোনো একটি হয়, তাহলে
- যদি স্ট্যাক খালি হয় বা স্ট্যাকের উপরের অংশটি d[c] এর মতো না হয়, তাহলে
- মিথ্যে ফেরত দিন
- স্ট্যাক থেকে পপ
- যদি স্ট্যাক খালি হয় বা স্ট্যাকের উপরের অংশটি d[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