Leetcode题解 - 22. Generate Parentheses
2017-04-21 14:09
369 查看
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:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
链接
回溯法,当遇到产生所有这个类型的时候可以考虑这种方式
假设在位置k我们还剩余left个左括号和right个右括号,如果left>0,则我们可以直接打印左括号,而不违背规则。能否打印右括号,我们还必须验证left和right的值是否满足规则,如果left>=right,则我们不能打印右括号,因为打印会违背合法排列的规则,否则可以打印右括号。如果left和right均为零,则说明我们已经完成一个合法排列。
For example, given n = 3, a solution set is:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
链接
回溯法,当遇到产生所有这个类型的时候可以考虑这种方式
假设在位置k我们还剩余left个左括号和right个右括号,如果left>0,则我们可以直接打印左括号,而不违背规则。能否打印右括号,我们还必须验证left和right的值是否满足规则,如果left>=right,则我们不能打印右括号,因为打印会违背合法排列的规则,否则可以打印右括号。如果left和right均为零,则说明我们已经完成一个合法排列。
class Solution { public: vector<string> generateParenthesis(int n) { generatePairs("",n,n); return bracket; } void generatePairs(string str,int left,int right){ if(left>right) return; if(left>0) generatePairs(str+"(",left-1,right); if(right>0) generatePairs(str+")",left,right-1); if(left==0&&right==0){ bracket.push_back(str); return; } } private: vector<string> bracket; };
相关文章推荐
- LeetCode 题解(Week15):22. Generate Parentheses
- LeetCode 22. Generate Parentheses 题解 —— Java
- LeetCodet题解--22. Generate Parentheses(生成n对匹配的括号)
- leetcode 22. Generate Parentheses
- LeetCode 22. Generate Parentheses
- LeetCode 22. Generate Parentheses(java)
- leetcode解题之22. Generate Parentheses java 版(圆括号的合法序列)
- [LeetCode] 22. Generate Parentheses
- leetcode 22. Generate Parentheses
- leetcode 22. Generate Parentheses
- leetcode 22. Generate Parentheses
- LeetCode-----22. Generate Parentheses(n个()可能的组合)
- <LeetCode OJ> 22. Generate Parentheses
- [LeetCode-Java]22. Generate Parentheses
- LeetCode22. Generate Parentheses
- LeetCode: 22. Generate Parentheses
- 【LeetCode】22. Generate Parentheses
- LeetCode22. Generate Parentheses
- leetcode 22. Generate Parentheses
- LeetCode 22. Generate Parentheses