22. 括号生成

一、题目

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

二、代码

class Solution {
public:
    vector<string> generateParenthesis(int n) {
        dfs("", n, n);
        return res;
    }
private:
    vector<string> res;
    void dfs(const string& str, int left, int right) {
        if (left < 0 || left > right)  // 出现类似 ()) )) 这种格式都是错误的不用再继续了
            return;
        if (left == 0 && right == 0) {
            res.push_back(str);
            return;
        }
        dfs(str + '(', left - 1, right);
        dfs(str + ')', left, right - 1);
    }
};

 

posted @ 2023-04-02 20:19  ImreW  阅读(13)  评论(0)    收藏  举报