LeetCode22:括号生成

Posted __rookie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode22:括号生成相关的知识,希望对你有一定的参考价值。

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

 

示例:

输入:n = 3
输出:[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]

 

采用回溯法,不断递归,在左括号数量不超过n时压入左括号,在右括号数量小于左括号时压入右括号,循环到底部就把产生的序列保存起来。

 1 class Solution {
 2 private:
 3     int len=0;
 4     vector<string> ret;
 5 public:
 6     vector<string> generateParenthesis(int n) {
 7         vector<char> cur;
 8         len=n;
 9         backtrace(0,0,cur);
10         return ret;
11     }
12 
13     void backtrace(int left, int right, vector<char> cur){
14         if(left==len && right==len){
15             string push="";
16             for(auto it=cur.begin();it!=cur.end();it++)
17                 push+=*it;
18             //cout<<push<<endl;
19             ret.push_back(push);
20 
21         }
22         if(left<len){
23             cur.push_back(();
24             backtrace(left+1,right,cur);
25             cur.pop_back();
26         }
27             
28         if(right<len && right<left){
29             cur.push_back());
30             backtrace(left,right+1,cur);
31             cur.pop_back();
32         }
33         return ;
34     }
35 };

其实可以直接声明string类型,string可以直接+或者push_back

以上是关于LeetCode22:括号生成的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode 22. 括号生成c++/java详细题解

leetcode-22 括号生成

leetcode 22 生成括号

leetcode-22括号生成

LeetCode22:括号生成

LeetCode- 22. 括号生成