题目:
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例:
输入:n = 3
输出:[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
思路:
- 我们可以考虑采用回溯法来做这道题目,通过跟踪左、右括号的数目来放括号,并进行回溯。
- 如果左括号数量不大于 n,我们可以放一个左括号。如果右括号数量小于左括号的数量,我们可以放一个右括号。在当前状态穷尽时,返回到上一状态。
- 最后当左右括号数目都为0时,将curString添加到列表中。
代码如下:
测试结果: