https://leetcode.com/problems/generate-parentheses/
这里用剩余左括号数目以及剩余右括号数目nl 以及nr来当做输入参数,逐个试探。
subres 用 ”字符串来计算。
class Solution(object):
def dfs(self, nl, nr, subres, res):
if nl == 0 and nr == 0:
res.append(subres[:])
return
elif nl > nr:#剩下的左括号数目大于右括号数目,那么就递归返回,回溯
return
else:
if nl > 0:
self.dfs(nl - 1, nr, subres + '(', res)
if nr > 0:
self.dfs(nl, nr - 1, subres + ')', res)
def generateParenthesis(self, n):
"""
:type n: int
:rtype: List[str]
"""
if n == 0: return []
res = []
self.dfs(n, n, "",res)
return res