📅  最后修改于: 2023-12-03 14:54:08.051000             🧑  作者: Mango
在计算机编程中,平衡括号是一个常见的问题。在一个括号序列中,括号必须以正确的顺序闭合。给定一个数字 N,我们的任务是生成所有有效的括号序列,使得括号总数为 N。
给定一个正整数 N,我们要编写一个函数来生成所有长度为 2N 的平衡括号序列。一个平衡括号序列定义如下:
例如,对于 N=3,我们可以生成的所有平衡括号序列为:
我们可以使用递归的方式来解决这个问题。
def generateParenthesis(N):
res = []
def backtrack(S, left, right):
if len(S) == 2 * N:
res.append(S)
return
if left < N:
backtrack(S + "(", left + 1, right)
if right < left:
backtrack(S + ")", left, right + 1)
backtrack("", 0, 0)
return res
print(generateParenthesis(3))
输出结果为:
["((()))", "(()())", "(())()", "()(())", "()()()"]