1 22题描述
给定n个小括号,输出所有可能的正确括号序列。
2 源代码
# 22题 括号生成
# 注意观察这道题有个特性:前n个括号中,左括号数量不会少于右括号数量!!!
res = []
def fun(left, right, n, s):
if left == 0 and right == 0:
res.append(s)
return
if left > 0:
fun(left - 1, right, n, s + '(')
if right > 0 and right > left: # 这里已经起到了剪枝的效果!!
fun(left, right - 1, n, s + ')')
def generateParenthesis(n):
s = ''
left = n
right = n
fun(left, right, n, s)
return res
generateParenthesis(3)
输出
[’((()))’, ‘(()())’, ‘(())()’, ‘()(())’, ‘()()()’]