मान लीजिए कि हमारे पास एक मान n है। हमें सभी संभव अच्छी तरह से गठित कोष्ठक उत्पन्न करना है जहां n संख्या में उद्घाटन और समापन कोष्ठक मौजूद हैं। तो यदि n =3 का मान है, तो कोष्ठक सेट ["()()()","()(())","(())()","(()()) होगा ","((()))"]
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- genParenthesisRec() नामक विधि को परिभाषित करें। यह बाएँ, दाएँ, अस्थायी स्ट्रिंग और परिणाम सरणी लेता है। प्रारंभ में परिणाम सरणी खाली है
- फ़ंक्शन genParenthesisRec, नीचे की तरह काम करेगा
- यदि बाएं =0 और दाएं:=0, तो परिणाम में अस्थायी डालें, और वापस लौटें
- अगर छोड़ दिया> 0
- getParenthesisRec(बाएं - 1, दाएं, अस्थायी + "(", परिणाम)
- अगर दाएं> बाएं
- getParenthesisRec(बाएं, दाएं -1, अस्थायी + ")", परिणाम)
उदाहरण (पायथन)
एक बेहतर समझ प्राप्त करने के लिए आइए निम्नलिखित कार्यान्वयन को देखें -
class Solution(object):
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
result = []
self.generateParenthesisUtil(n,n,"",result)
return result
def generateParenthesisUtil(self, left,right,temp,result):
if left == 0 and right == 0:
result.append(temp)
return
if left>0:
self.generateParenthesisUtil(left-1,right,temp+'(',result)
if right > left:
self.generateParenthesisUtil(left, right-1, temp + ')', result)
ob = Solution()
print(ob.generateParenthesis(4)) इनपुट
4
आउटपुट
["(((())))", "((()()))", "((())())", "((()))()", "(()(()))", "(()()())", "(()())()", "(())(())", "(())()()", "()((()))", "()(()())", "()(())()", "()()(())", "()()()()"]