22. 括号生成

给出 n 代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。

例如

给出 n = 3,生成结果为:
[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

代码

class Solution {
public:
    vector<string> generateParenthesis(int n) {
        vector<string> res;
        generateParenthesisDFS(n, n, "", res);
        return res;
    }
    void generateParenthesisDFS(int left, int right, string out, vector<string> &res) {
        if (left > right) return;
        if (left == 0 && right == 0) res.push_back(out);
        else {
            if (left > 0) generateParenthesisDFS(left - 1, right, out + '(', res);
            if (right > 0) generateParenthesisDFS(left, right - 1, out + ')', res);
        }
    }
};
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 给出n代表生成括号的对数,请你写出一个函数,使其能够生成所有可能的并且有效的括号组合。 例如,给出n=3,生成结果...
    不爱去冒险的少年y阅读 190评论 0 0
  • 凤凰山上换绿装 披星戴月追梦人 今年的重阳节格外有诗意,我随洛阳晚报《咱爸咱妈》聚乐部组团来...
    玉眼看世界阅读 371评论 0 0
  • 文 | 晨妤儿 生活就是自己折腾 梦在那个方向,你就往哪里奔去 生活就是自己折腾 苦和笑不停的在继续 生活就是自己...
    晨妤儿阅读 275评论 0 2
  • 文/A 幸运点 星期一的早上,轻轨里人格外的多,我依旧寻了一处门边的位置,静静的把自己立在那,一根铁管在我触手可及...
    A幸运点阅读 464评论 56 31