题目内容
数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
示例
示例 1:
输入:n = 3
输出:[“((()))”,”(()())”,”(())()”,”()(())”,”()()()”]
示例 2:
输入:n = 1
输出:[“()”]
提示
1 <= n <= 8
题解
这个题比较特殊,一般的求解思路在这里都会比较麻烦。这里破题的点在于思考括号生成的条件,这里给出来,大家以后记住就好。推论如下:
在假设括号类型相同的情况下有:
1、任意字符串前缀,左括号数量一定大于等于右括号数量
2、从整体来看,左右括号数量一定相等
本题需要根据以上信息,进行求解。
因为是一种搜索生成有效的括号的实例,所以我们可以采用最常见的深度优先遍历搜索算法,以递归的实现方式来求解题目。
在实现dfs函数中,需要传入的变量有:题目中给出的括号对数n、当前搜索中左括号的数量lc、当前搜索中右括号的数量rc,以及当前搜索的括号字符串结果seq。
具体,请看代码实现以及注释即可。
代码
class Solution { |