मान लीजिए कि हमारे पास एक मान 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
आउटपुट
["(((())))", "((()()))", "((())())", "((()))()", "(()(()))", "(()()())", "(()())()", "(())(())", "(())()()", "()((()))", "()(()())", "()(())()", "()()(())", "()()()()"]