美文网首页
LeetCode-22-括号生成

LeetCode-22-括号生成

作者: 突击手平头哥 | 来源:发表于2019-12-01 20:35 被阅读0次

    LeetCode-22-括号生成

    题目

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

    例如,给出 n = 3,生成结果为:

    [
    "((()))",
    "(()())",
    "(())()",
    "()(())",
    "()()()"
    ]

    来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/generate-parentheses
    著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

    C++实现

    class Solution {
        /*
        *   t: 总队数
        *   l: 左括号个数
        *   r: 右括号个数
        *   str: 目前的字符串
        *   res: 保存结果的数组
        */
        void core(int t, int l, int r, string str, vector<string> &res)
        {
            if(r > t || l > t)  return;
    
            if(r == l && t == l)
            {
                if(str.size())  res.push_back(str); 
            }
    
            if(l<=r)   
                core(t, l+1, r, str +"(", res);
            else
            {
                core(t, l+1, r, str + "(", res);    //左括号
                core(t, l, r+1, str + ")", res);    //右括号
            }
        }
    public:
        vector<string> generateParenthesis(int n) {
            string str;
            vector<string> res;
            core(n, 0, 0, str, res);
            return res;
        }
    };
    

    相关文章

      网友评论

          本文标题:LeetCode-22-括号生成

          本文链接:https://www.haomeiwen.com/subject/ukdtgctx.html