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

来源:互联网 发布:手机淘宝脸部拍摄认证 编辑:程序博客网 时间:2024/06/06 07:07

题目链接: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)提交结果:

这里写图片描述

原创粉丝点击