0022: Generate Parentheses
Problem Statement
Given n
pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
Example 1:
Input: n = 3 Output: ["((()))","(()())","(())()","()(())","()()()"]
Example 2:
Input: n = 1 Output: ["()"]
Constraints:
1 <= n <= 8
Code Solution
class Solution:
def generateParenthesis(self, n):
def generate(ob, cb, buf, output):
if cb > ob:
return
if len(buf) == 2 * n:
output.append("".join(buf))
return
if ob < n:
buf.append('(')
generate(ob + 1, cb, buf, output)
buf.pop()
buf.append(')')
generate(ob, cb + 1, buf, output)
buf.pop()
result = []
generate(0, 0, [], result)
return result