给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。
例如,给出 n = 3,生成结果为:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
思路:递归的搜索方式,深度搜索。
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
self.list = []
self._gen(0,0,n,"")
return self.list
def _gen(self,left,right,n,result):
if left == n and right == n:
self.list.append(result)
return
if left < n:
self._gen(left + 1 ,right,n,result + "(")
if right < n and right < left:
self._gen(left, right + 1 ,n,result + ")" )
注意事项是_gen函数参数left、right的已使用的括号数。