Leetcode-22.Generate Parentheses
来源:互联网 发布:好看的韩剧 知乎 编辑:程序博客网 时间:2024/04/30 23:25
Problem description:
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:
“((()))”, “(()())”, “(())()”, “()(())”, “()()()”
Analysis: It’s a dfs problem with backtracking .
First we need to figure out,
there are two ways to add a left or right parentheses to the current string.
If number of ( is less than n, you can add (;If number of ) is less than number of (, you can add ).
Then we could add left or right parentheses, at each level of recursion.
codes:
class Solution {public: vector<string> generateParenthesis(int n) { vector<string> res; if(n==0)return res; string s; combine(res,s,n,0); return res; } void combine(std::vector<string>& res,string s,int left,int right) { if(left==0&&right==0) { res.push_back(s); return; } if(left>0) combine(res,s+'(',left-1,right+1); if(right>0) combine(res,s+')',left,right-1); }};
slow method:
vector<string> generateParenthesis(int n) { vector<string> res; string s="()"; if(n==0)return res; if(n==1) { res.push_back(s); return res; } combine(res,n-1,s); return res; } void combine(vector<string> &res,int n,string s){ //cout<<n<<" "<<s<<endl; int i; if(n==0){ vector<string>::iterator it=find(res.begin(),res.end(),s); if(it==res.end()) res.push_back(s); return; } int count=s.size(); vector<string> tmp; for(i=0;i<count/2+1;i++) { string t=s; t=t.insert(i,"()"); //vector<string>::iterator result = find(tmp.begin( ),tmp.end( ),t); //if (result == tmp.end( ) ) combine(res,n-1,t); //else continue; } //combine(n-1,s.insert(i,"()")); }
0 0
- [LeetCode]22.Generate Parentheses
- LeetCode --- 22. Generate Parentheses
- LeetCode 22.Generate Parentheses
- [Leetcode] 22. Generate Parentheses
- 【LeetCode】22.Generate Parentheses
- [leetcode] 22.Generate Parentheses
- 【leetcode】22. Generate Parentheses
- Leetcode-22.Generate Parentheses
- [leetcode] 22. Generate Parentheses
- 22. Generate Parentheses LeetCode
- leetcode 22. Generate Parentheses
- [LeetCode]22. Generate Parentheses
- leetcode 22. Generate Parentheses
- leetcode 22. Generate Parentheses
- LeetCode 22. Generate Parentheses
- [LeetCode]22. Generate Parentheses
- LeetCode *** 22. Generate Parentheses
- LeetCode 22. Generate Parentheses
- Java虚拟机Dalvik
- 智能指针模拟C
- Scala简介
- 选择
- 正则表达之----常用正则表达式验证
- Leetcode-22.Generate Parentheses
- ES6学习——新的语法:Rest
- 2016太原网络营销师郭文军网站内容如何诊断?
- Codeforces Round #336 (Div. 2) B. Hamming Distance Sum
- ARP协议详解及如何编程实现ARP攻击
- MY MAC 终端指令
- c语言学习感受
- c语言项目总结
- 利用Censys批量获取Juniper Netscreen后门