题目地址
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);
}
}
};