Generate Parentheses
2015-11-05 19:08
288 查看
题目名称
Generate Parentheses—LeetCode链接
描述
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 时,就可以放置新的左括号。当右括号出现次数小于左括号出现次数时,就可以放置新的右括号。
C++代码
总结
代码是参考别人的,递归还不是很熟悉,需要多多练习。
Generate Parentheses—LeetCode链接
描述
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 时,就可以放置新的左括号。当右括号出现次数小于左括号出现次数时,就可以放置新的右括号。
C++代码
class Solution { public: vector<string> generateParenthesis(int n) { vector<string> res; if(n>0) generate(n,"",0,0,res); return res; } void generate(int n, string s, int l, int r, vector<string> &res) { if(l==n) { res.push_back(s.append(n-r,')')); return; } generate(n,s+"(",l+1,r,res); if(l>r) generate(n,s+")",l,r+1,res); } };
总结
代码是参考别人的,递归还不是很熟悉,需要多多练习。
相关文章推荐
- leetcode 179 Largest Number
- leetcode 24 Swap Nodes in Pairs
- leetcode 2 Add Two Numbers 方法1
- leetcode 2 Add Two Numbers 方法2
- [LeetCode]47 Permutations II
- [LeetCode]65 Valid Number
- [LeetCode]123 Best Time to Buy and Sell Stock III
- [LeetCode] String Reorder Distance Apart
- [LeetCode] Sliding Window Maximum
- [LeetCode] Find the k-th Smallest Element in the Union of Two Sorted Arrays
- [LeetCode] Determine If Two Rectangles Overlap
- [LeetCode] A Distance Maximizing Problem
- leetcode_linearList
- leetcode_linearList02
- 021-Merge Two Sorted Lists(合并两个排好序的单链表);leetcode
- LeetCode[Day 1] Two Sum 题解
- LeetCode[Day 2] Median of Two Sorted Arrays 题解
- LeetCode[Day 3] Longest Substring Without... 题解
- LeetCode [Day 4] Add Two Numbers 题解
- LeetCode [Day 5] Longest Palindromic Substring 题解