Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
solution
This is a classic backtracking problem, very similar to 46-permutations.
def generateParenthesis(self, n: int) -> List[str]:
ans = []
def recurse(o, c, acc):
if o == c and o == n:
ans.append(acc)
return
if o == c:
recurse(o+1, c, acc+"(")
elif o > c:
if o < n:
recurse(o+1, c, acc+"(")
recurse(o, c+1, acc+")")
recurse(0, 0, "")
return ans