https://leetcode.com/problems/generate-parentheses/
Medium
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
- 回溯,DFS。学习判断括号有效的剪枝技巧。
- https://leetcode.com/problems/generate-parentheses/solution/
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 class Solution: 2 def generateParenthesis(self, n: int) -> List[str]: 3 if n == 0: 4 return None 5 6 result = [] 7 8 def helper(s = '', left = 0, right = 0): 9 if len(s) == 2 * n: 10 result.append(s) 11 return 12 13 if left < n: 14 helper(s + '(', left + 1, right) 15 16 if right < left: 17 helper(s + ')', left, right + 1) 18 19 helper() 20 return result