ধরুন আমাদের বন্ধনীর একটি স্ট্রিং (গোলাকার, কোঁকড়া এবং বর্গাকার) আছে, আমাদের পরীক্ষা করতে হবে যে বন্ধনীগুলি সুষম (সুগঠিত) কি না।
সুতরাং, যদি ইনপুটটি 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