[LeetCode] 032: Generate Parentheses
来源:互联网 发布:免费视频监控软件 编辑:程序博客网 时间:2024/06/06 03:57
[Problem]
[Solution]
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
[Solution]
class Solution {说明:版权所有,转载请注明出处。Coder007的博客
public:
vector<string> generateParenthesis(int left, int right, stack<char> myStack){
vector<string> res;
if(left == 0 && right == 0){
return res;
}
// insert '(' only
if(myStack.empty()){
myStack.push('(');
vector<string> nextResult = generateParenthesis(left-1, right, myStack);
for(int i = 0; i < nextResult.size(); ++i){
res.push_back("(" + nextResult[i]);
}
}
else{
if(myStack.top() == '('){
// 1. insert '('
if(left > 0){
myStack.push('(');
vector<string> nextResult = generateParenthesis(left-1, right, myStack);
for(int i = 0; i < nextResult.size(); ++i){
res.push_back("(" + nextResult[i]);
}
// remove the '(' inserted just now
myStack.pop();
}
// 2. insert ')'
myStack.pop();
if(right == 1){
res.push_back(")");
}
else{
vector<string> nextResult = generateParenthesis(left, right-1, myStack);
for(int i = 0; i < nextResult.size(); ++i){
res.push_back(")" + nextResult[i]);
}
}
}
}
return res;
}
vector<string> generateParenthesis(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
stack<char> myStack;
return generateParenthesis(n, n, myStack);
}
};
阅读全文
0 0
- [LeetCode] 032: 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
- 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] 030: First Missing Positive
- Makefile---$@ $^ $<
- [LeetCode] 031: Flatten Binary Tree to Linked List
- c#修改程序名称——转载
- [转载] Catalan数及其应用
- [LeetCode] 032: Generate Parentheses
- [LeetCode] 033: Gray Code
- Python基础(8)-软件开发规范
- [LeetCode] 034: Implement strStr()
- Gradle学习系列之三——读懂Gradle语法
- [LeetCode] 035: Insert Interval
- [LeetCode] 036: Integer to Roman
- [LeetCode] 037: Interleaving String
- 我是蒟蒻,但我有我的OI信仰