目录

题目描述:

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

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

示例:

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

解法:


class Solution {
public:
    vector<string> generate(int left, int right){
        // cout<<left<<", "<<right<<endl;
        vector<string> res;
        if(left == 0 && right == 0){
            return {""};
        }
        
        if(left < right){
            if(left >= 1){
                vector<string> tmp = generate(left-1, right);
                for(string s : tmp){
                    res.push_back('(' + s);
                }
            }
            vector<string> tmp = generate(left, right-1);
            for(string s : tmp){
                res.push_back(')' + s);
            }
        }else{
            vector<string> tmp = generate(left-1, right);
            for(string s : tmp){
                res.push_back('(' + s);
            }
        }
        return res;
    }
    
    vector<string> generateParenthesis(int n) {
        return generate(n, n);
    }
};
扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄