leetcode之Generate Parentheses
来源:互联网 发布:可变数据喷码机价格 编辑:程序博客网 时间:2024/05/01 18:14
原题如下:
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到2n个序列位置进行括号插入时,都要符合剩余的右括号数量大于剩余的左括号的数量,按照此原则,我们在打印时可以记录并更新剩余的左右括号数量:当剩余的左右括号都为0时,一个序列打印完毕;当剩余的左括号大于0时,打印左括号,然后递归调用;当剩余的左括号小于右括号时,打印右括号,然后递归调用。可以看出此题仍采用的分治策略,而且在每个节点都有两次递归调用(对应打印左括号和右括号两种情况),具体代码如下:
class Solution {public: vector<string> generateParenthesis(int n) {vector<string>v;if(n == 0)return v;string s;generate(n,n,s,v);return v; }void generate(int leftleft,int rightleft,string s,vector<string>&v){if(leftleft == 0 && rightleft == 0){v.push_back(s);return;}if(leftleft > 0){//string ss = s;s.append(1,'(');generate(leftleft-1,rightleft,s,v);s = s.erase(s.size()-1,1);}if(leftleft < rightleft){//string ss = s;s.append(1,')');generate(leftleft,rightleft-1,s,v);s = s.erase(s.size()-1,1);}return;}};注:此处对字符串string类的操作不够熟练,记得在每次递归调用后返回时应使字符串处于递归调用前的状态,目前对此题的理解还需进一步深入。。。
0 0
- leetcode之 Generate Parentheses
- leetcode之Generate Parentheses
- leetcode之 Generate Parentheses
- 【Leetcode】之Generate Parentheses
- LeetCode之22----Generate Parentheses
- leetcode之 Generate Parentheses(Catalan数)
- leetcode之路022 Generate Parentheses
- LeetCode之Generate Parentheses(C++)
- LeetCode进阶之路(Generate Parentheses)
- 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
- TCP协议和SocketAPI的几个小问题
- 2.4使用数据项显示子元素(display children using data items)
- I帧和IDR的区别
- 九度题目1436:Repair the Wall
- POJ 1007 DNA Sorting
- leetcode之Generate Parentheses
- 【嵌入式Linux学习七步曲之第二篇 ARM+Linux开发环境】gdb+gdbserver的方式进行ARM程序调试
- android超链接
- 将Eclipse项目转到Android Studio你所应该知道的
- Making Your ActionBar Not Boring
- 笔试题之sqrt函数重写
- 第六周项目4-时间- -
- Cassandra Query Language (CQL) v2.0
- CF 239 C Triangle