[Leetcode]Generate Parentheses
来源:互联网 发布:网络另类说唱歌手 编辑:程序博客网 时间:2024/05/15 23:50
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
class Solution {public: /*algorithm , DFS brute force generate all pairs,for each, check its valid */ bool validPair(string s){ stack<char>stk; for(int i = 0;i < s.size();i++){ if(s[i] == '(')stk.push('('); else{ if(stk.empty() || stk.top() != '(') return false; stk.pop(); } } return stk.empty(); } void dfs(vector<string>&pairs,string pair,int n){ if(pair.size()==n){ if(validPair(pair))pairs.push_back(pair); return; } string symbol[2]={"(",")"}; for(int i = 0;i < 2;i++){ if(pair.empty() && symbol[i]==")")continue; dfs(pairs,pair+symbol[i],n); } } vector<string> generateParenthesis(int n) { vector<string>pairs; dfs(pairs,"",n*2); return pairs; }};
class Solution {public: /*algorithm , DFS before add ")" and "(",keep cnt("(") >= cnt(")") */ void dfs(vector<string>&pairs,string pair,int n,int lcnt,int rcnt){ if(pair.size()==(2*n)){ pairs.push_back(pair); return; } if(lcnt < n){ dfs(pairs,pair+"(",n,lcnt+1,rcnt); } if(lcnt > rcnt){ dfs(pairs,pair + ")",n,lcnt,rcnt+1); } } vector<string> generateParenthesis(int n) { vector<string>pairs; dfs(pairs,"(",n,1,0); return pairs; }};
0 0
- LeetCode: Generate Parentheses
- LeetCode: Generate Parentheses
- [Leetcode] Generate Parentheses
- leetcode 51: Generate Parentheses
- [LeetCode] Generate Parentheses
- Leetcode: Generate Parentheses
- LeetCode Generate Parentheses
- 【leetcode】Generate Parentheses
- [LeetCode]Generate Parentheses
- Leetcode Generate Parentheses
- LeetCode-Generate Parentheses
- LeetCode: Generate Parentheses
- LeetCode - Generate Parentheses
- LeetCode 22: Generate Parentheses
- LeetCode: Generate Parentheses
- Leetcode: Generate Parentheses
- 【leetcode】Generate Parentheses
- Leetcode: Generate Parentheses
- 找工作之路之华为面试经历
- html里的常用特殊符号表示大全
- iOS 9系统策略更新,使用微信SDK的开发者注意升级
- 敏捷开发之XP
- 黑马北京新闻项目连载(6)--->Gson解析、刷新加载、WebView展现
- [Leetcode]Generate Parentheses
- 统计 Android 单元测试代码覆盖率
- 【LeetCode】Move Zeroes
- 回调函数种种
- celery最佳实践
- ForkJoinPool
- UML视频第一部分总结
- 关于翻译ArcGIS API for JavaScript开发书籍的经历
- Spring与Mybatis整合的MapperScannerConfigurer处理过程