「力扣」第 22 题:括号生成(中等)
给出
n
代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。例如,给出
n = 3
,生成结果为:[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
思路:
- 左右都有可以使用的括号数量,即严格大于 $0$ 的时候,才产生分支;
- 左边不受右边的限制,它只受自己的约束;
- 右边除了自己的限制以外,还收到左边的限制,即右边剩余的数量一定得在严格大于左边剩余的数量的时候,才可以“节外生枝”;
- 在左边和右边剩余的括号数都等于 $0$ 的时候结算。
注意:由于字符串在传参的时候,每一次都生成新的字符串,因此没有显式「回溯」的过程。