ধরুন আমাদের '(' এবং ')' বন্ধনীর একটি স্ট্রিং S আছে, আমরা যেকোনো অবস্থানে সর্বনিম্ন বন্ধনীর সংখ্যা যোগ করি, যাতে ফলস্বরূপ বন্ধনী স্ট্রিংটি বৈধ হয়। একটি বন্ধনী স্ট্রিং বৈধ যদি এবং শুধুমাত্র যদি −
হয়- এটি খালি স্ট্রিং
- এটি XY (Y এর সাথে X সংযুক্ত) হিসাবে লেখা যেতে পারে, যেখানে X এবং Y বৈধ স্ট্রিং
- এটি (A) হিসাবে লেখা যেতে পারে, যেখানে A একটি বৈধ স্ট্রিং।
তাই যদি স্ট্রিংটি "()))((" এর মত হয়, তাহলে স্ট্রিংটিকে বৈধ করতে আমাদের আরও 4টি বন্ধনী যুক্ত করতে হবে৷
এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -
- যদি S খালি হয়, তাহলে 0 ফেরত দিন
- count :=0, temp হল একটি অ্যারে, temp_counter :=0
- আমি S
- তে
- যদি আমি বন্ধনী খুলছি, তাহলে টেম্পে i ঢোকান
- অন্যথায়
- যখন temp এর দৈর্ঘ্য> 0 এবং এর শেষ উপাদানটি বন্ধনী খুলছে, তখন temp-এর শেষ উপাদানটি মুছে দিন, অন্যথায় temp-এ i ঢোকান
- তাপের আকার ফেরত দিন।
আরো ভালোভাবে বোঝার জন্য আসুন নিচের বাস্তবায়ন দেখি -
উদাহরণ
class Solution: def minAddToMakeValid(self, S): if not S: return 0 count = 0 temp = [] temp_counter = 0 for i in S: if i =='(': temp.append(i) else: if len(temp)>0 and temp[len(temp)-1] =='(': temp.pop(len(temp)-1) else: temp.append(i) return len(temp) ob = Solution() print(ob.minAddToMakeValid("()))(("))
ইনপুট
"()))(("
আউটপুট
4