[leetcode]22. Generate Parentheses

题目地址

https://leetcode.com/problems/generate-parentheses/

题目大意

给定一个整数n,生成所有可能的字符串,这些字符串是由n对括号组成的,且这n对括号的排列是合法的。

解题思路

递归求解,每次递归在字符串中追加一个字符,使其一直保持合法性。

代码

class Solution {
private:
    vector<string> result;
public:
    vector<string> generateParenthesis(int n) {
        generateParenthesis(n, n, "");
        return result;
    }

    void generateParenthesis(int left, int right, string mid_res) {
        if (left > 0) {
            generateParenthesis(left - 1, right, mid_res + "(");
        }
        if (left < right && right > 0) {
            generateParenthesis(left, right - 1, mid_res + ")");
        }

        if (left == 0 && right == 0) {
            result.push_back(mid_res);
        }
    }
};
点赞