LeetCode 22: Generate Parentheses
2013-09-01 17:23
471 查看
Difficulty: 3
Frequency: 4
Problem:
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 {
public:
vector<string> generateParenthesis(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<string> answer;
if (n<1)
return answer;
vector<char> Parenthesis;
DFS(Parenthesis, answer, n, n);
return answer;
}
void DFS(vector<char> & Parenthesis, vector<string> & answer, int i_left, int i_right)
{
if (i_left==0&&i_right==0)
{
string one_case;
for(int i = 0; i<Parenthesis.size(); i++)
{
one_case += Parenthesis[i];
}
answer.push_back(one_case);
return;
}
if (i_left==i_right)
{
Parenthesis.push_back('(');
DFS(Parenthesis, answer, i_left-1, i_right);
Parenthesis.pop_back();
}
else
{
if (i_left>0)
{
Parenthesis.push_back('(');
DFS(Parenthesis, answer, i_left-1, i_right);
Parenthesis.pop_back();
}
Parenthesis.push_back(')');
DFS(Parenthesis, answer, i_left, i_right-1);
Parenthesis.pop_back();
}
}
};
Notes:
CC150 has a same question.
Frequency: 4
Problem:
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 {
public:
vector<string> generateParenthesis(int n) {
// Start typing your C/C++ solution below
// DO NOT write int main() function
vector<string> answer;
if (n<1)
return answer;
vector<char> Parenthesis;
DFS(Parenthesis, answer, n, n);
return answer;
}
void DFS(vector<char> & Parenthesis, vector<string> & answer, int i_left, int i_right)
{
if (i_left==0&&i_right==0)
{
string one_case;
for(int i = 0; i<Parenthesis.size(); i++)
{
one_case += Parenthesis[i];
}
answer.push_back(one_case);
return;
}
if (i_left==i_right)
{
Parenthesis.push_back('(');
DFS(Parenthesis, answer, i_left-1, i_right);
Parenthesis.pop_back();
}
else
{
if (i_left>0)
{
Parenthesis.push_back('(');
DFS(Parenthesis, answer, i_left-1, i_right);
Parenthesis.pop_back();
}
Parenthesis.push_back(')');
DFS(Parenthesis, answer, i_left, i_right-1);
Parenthesis.pop_back();
}
}
};
Notes:
CC150 has a same question.
相关文章推荐
- LeetCode 22 Generate Parentheses
- [leetcode 22]generate parentheses
- LeetCode 22 Generate Parentheses (C,C++,Java,Python)
- leetcode[22]Generate Parentheses
- [LeetCode]22 Generate Parentheses
- Leetcode 22 Generate Parentheses
- leetcode 22 Generate Parentheses
- [leetcode 22] Generate Parentheses
- LeetCode 22 Generate Parentheses(生成括号)
- 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 ( JAVA )
- LeetCode 22 — Generate Parentheses(C++ Java Python)
- [leetcode 22]Generate Parentheses-----n对括号可以组成的括号对序列
- 【LeetCode】【Array】【22】Generate Parentheses
- LeetCode 22 Generate Parentheses
- 【LeetCode】C# 22、Generate Parentheses