您的位置:首页 > 编程语言 > Go语言

[LeetCode-Algorithms-22] "Generate Parentheses" (2017.10.25-WEEK8)

2017-10-25 22:38 429 查看

题目链接: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());
}
};


(3)提交结果:

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: