题目:
原题链接: https://leetcode-cn.com/problems/generate-parentheses/
解题思路:
"所有可能",第一反应还是回溯
并且这个有需要剪枝的地方,所以最终决定使用回溯算法
在递归的过程中,保存当前已经有的左括号次数left,和右括号次数right
当left < n时,允许继续追加左括号
当right < left时,允许继续追加右括号
当当前字符串长度为2n时,说明拼接完成,保存当前字符串
代码实现:
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
if 0 == n:
return []
res_lst = []
def create_quote_pair(s = '', left = 0, right = 0):
if len(s) == n * 2:
res_lst.append(s)
return
if left < n:
create_quote_pair(s + '(', left + 1, right)
if right < left:
create_quote_pair(s + ')', left, right + 1)create_quote_pair()
return res_lst