找工作刷题记录_020括号的有效组合

给出 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的已使用的括号数。

猜你喜欢

转载自blog.csdn.net/qq_23565519/article/details/88765166