题目大意:给定一个数字表示括号对的个数,求不同的括号组合
解题思路:递归
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> result;
string parenthesis;
generateParenthesisAssist(result, parenthesis, n, 0, 0);
return result;
}
private:
void generateParenthesisAssist(vector<string> &result, string &parenthesis, int n, int left, int right) {
if(n == 0 && left == right) {
result.push_back(parenthesis);
return;
}
if(n > 0) {
parenthesis.push_back('(');
generateParenthesisAssist(result, parenthesis, n - 1, left + 1, right);
parenthesis.pop_back();
}
if(left > right) {
parenthesis.push_back(')');
generateParenthesisAssist(result, parenthesis, n, left, right + 1);
parenthesis.pop_back();
}
}
};