题目链接:Generate Parentheses
- 题目描述:
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
(1)思路:在考虑每一个数的左括号时必须在其后插入括号对才能保证左右括号的匹配,采用递归的方法插入。
(2)代码:
class Solution {
public:
vector<string> generateParenthesis(int n) {
set<string> gerp;
int i, j;
if (n == 0) gerp.insert("");
else {
vector<string> pre = generateParenthesis(n - 1);
for (i = 0; i < pre.size(); i++) {
for (int j = 0; j < pre[i].size(); ++j) {
if (pre[i][j] == '(') {
pre[i].insert(pre[i].begin() + j + 1, '(');
pre[i].insert(pre[i].begin() + j + 2, ')');
gerp.insert(pre[i]);
pre[i].erase(pre[i].begin() + j + 1, pre[i].begin() + j + 3);
}
}
gerp.insert("()" + pre[i]);
}
}
return vector<string>(gerp.begin(), gerp.end());
}
};