content

code
class Solution {
public:
vector<string> ans;
vector<string> generateParenthesis(int n) {
dfs(n, 0, 0, "");
return ans;
}
void dfs(int n, int lc, int rc, string sec)
{
if (lc == n && rc == n) ans.push_back(sec);
else
{
// ( 的条件是 l_cnt < n 就可以加
// ) 的条件是 r_cnt < n && r_cnt < l_cnt 即可合法添加)
if (lc < n ) dfs(n, lc + 1, rc, sec + '(');
if (rc < n && rc < lc) dfs(n, lc, rc + 1, sec + ')');
}
}
};
本文介绍了一种使用深度优先搜索(DFS)生成所有有效组合的括号字符串的方法。通过递归地添加左括号和右括号,并确保在任何时刻右括号的数量不超过左括号的数量来实现合法性检查。
324

被折叠的 条评论
为什么被折叠?



