leetcode:22. Generate Parentheses

来源:互联网 发布:点赞功能数据库设计 编辑:程序博客网 时间:2024/06/11 08:02

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:

[  "((()))",  "(()())",  "(())()",  "()(())",  "()()()"]
解题思路:

将n组圆括号的组合输出,用递归解决。每放一个左括号时右括号可放的位置就多一个,优先放满左括号。代码如下:

class Solution {public:    void dfs(int L, int R, vector<string>& st, string s){        if(L == 0 && R == 0){            st.push_back(s);            return;        }        if(L){            dfs(L - 1, R + 1, st, s + "(");        }        if(R){            dfs(L, R - 1, st, s + ")" );        }    }    vector<string> generateParenthesis(int n) {        vector<string> st;        if(n < 0)return st;        string s;        st.clear();        dfs(n, 0, st, s);        return st;    }};


0 0
原创粉丝点击