मान लीजिए कि हमारे पास '(' और ')' कोष्ठकों का एक स्ट्रिंग S है, हम किसी भी स्थिति में कोष्ठकों की न्यूनतम संख्या जोड़ते हैं, ताकि परिणामी कोष्ठक स्ट्रिंग मान्य हो। एक कोष्ठक स्ट्रिंग मान्य है यदि और केवल यदि -
- यह खाली स्ट्रिंग है
- इसे XY के रूप में लिखा जा सकता है (X को Y के साथ जोड़ा जाता है), जहां X और Y मान्य स्ट्रिंग हैं
- इसे (ए) के रूप में लिखा जा सकता है, जहां ए एक वैध स्ट्रिंग है।
इसलिए यदि स्ट्रिंग "()))((" की तरह है, तो हमें स्ट्रिंग को वैध बनाने के लिए 4 और कोष्ठक जोड़ने होंगे।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- अगर S खाली है, तो 0 वापस करें
- गिनती:=0, अस्थायी एक सरणी है, temp_counter:=0
- एस में मैं के लिए
- अगर मैं कोष्ठक खोल रहा हूँ, तो i को अस्थायी में डालें
- अन्यथा
- जब अस्थायी की लंबाई> 0 और का अंतिम तत्व कोष्ठक खोल रहा है, तो अस्थायी के अंतिम तत्व को हटा दें, अन्यथा 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