मान लीजिए हमारे पास एक मान n है। हमें सभी संभावित सुव्यवस्थित पैरेंथेसिस उत्पन्न करने हैं जहां n संख्या में ओपनिंग और क्लोजिंग पैरेंथेसिस मौजूद हैं। इसलिए यदि n का मान 3 है, तो पैरेंथेसिस सेट ["()()()","()(())","(())()","(()())","((()))"] होगा
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −
- genParenthesisRec() नामक एक विधि परिभाषित करें। यह left, right, temp स्ट्रिंग और result सरणी लेता है। प्रारंभ में result सरणी खाली है
- फंक्शन genParenthesisRec, नीचे की तरह काम करेगा
- यदि left = 0 और right := 0, तो temp को result में डालें, और वापस लौटें
- यदि left > 0
- getParenthesisRec(left - 1, right, temp + "(", result)
- यदि right > left
- getParenthesisRec(left, right - 1, temp + ")", result)
उदाहरण (पाइथन)
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें −
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
आउटपुट
["(((())))", "((()()))", "((())())", "((()))()", "(()(()))", "(()()())", "(()())()", "(())(())", "(())()()", "()((()))", "()(()())", "()(())()", "()()(())", "()()()()"]