题目链接:https://leetcode-cn.com/problems/generate-parentheses/
难度:中等
描述:
数字 n
代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
提示:n
:[1, 8]
题解
class Solution:
def generateParenthesis(self, n: int) -> List[str]:
ret = []
def dfs(temp, left, right):
"""
temp:当前的括号串
left:还有left个左括号没用
right:还有right个右括号没用
"""
if left == 0 and right == 0:
ret.append(temp)
return
if left > right: # 当前括号串的左括号数必须比右括号数大,否则会出现未匹配的右括号
return
if left > 0:
dfs(temp+'(', left-1, right)
if right > 0:
dfs(temp+')', left, right-1)
dfs("", n, n)
return ret