Leetcode: Generate Parentheses
2013-10-01 23:49
344 查看
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:
第二遍的代码:
class Solution {
public:
void backTracking(vector<string> &res, string str, int left, int right, int n)
{
if(left < right || right + left > n*2) return;
if(left == n && right == n) { res.push_back(str); return; }
backTracking(res, str + "(", left + 1, right, n);
backTracking(res, str + ")", left, right + 1, n);
}
vector<string> generateParenthesis(int n) {
vector<string> res;
string str = "";
backTracking(res, str, 0, 0, n);
return res;
}
};
For example, given n = 3, a solution set is:
"((()))", "(()())", "(())()", "()(())", "()()()"
void parenthesis(char* str, int left, int right, int n, vector<string> &res) { if(left == right && left+right == 2*n) { stringstream ss(str); string tmp; ss>>tmp; //cout<<tmp<<endl; res.push_back(tmp); return; } if(left<right || left+right>=2*n)return; int index = left+right; str[index] = '('; parenthesis(str,left+1,right,n,res); str[index] = ')'; parenthesis(str,left,right+1,n,res); } vector<string> generateParenthesis(int n) { // Start typing your C/C++ solution below // DO NOT write int main() function vector<string> res; char* str = new char[2*n+1]; str[2*n] = '\0'; parenthesis(str,0,0,n,res); return res; }
第二遍的代码:
class Solution {
public:
void backTracking(vector<string> &res, string str, int left, int right, int n)
{
if(left < right || right + left > n*2) return;
if(left == n && right == n) { res.push_back(str); return; }
backTracking(res, str + "(", left + 1, right, n);
backTracking(res, str + ")", left, right + 1, n);
}
vector<string> generateParenthesis(int n) {
vector<string> res;
string str = "";
backTracking(res, str, 0, 0, n);
return res;
}
};
相关文章推荐
- [Leetcode 22, Medium] Generate Parentheses
- LeetCode 22 Generate Parentheses
- leetcode—Generate Parentheses
- LeetCode: Generate Parentheses
- [LeetCode] Generate Parentheses 解题报告
- 【JAVA、C++】LeetCode 022 Generate Parentheses
- LeetCode Generate Parentheses
- LeetCode 22:Generate Parentheses
- leetcode - Generate Parentheses
- Java [leetcode 22]Generate Parentheses
- LeetCode——Generate Parentheses
- Leetcode 22 Generate Parentheses
- Leetcode 22 Generate Parentheses
- LeetCode——Generate Parentheses
- [LeetCode]022-Generate Parentheses
- [leetcode]Generate Parentheses
- LeetCode题解——Generate Parentheses
- leetcode[22]Generate Parentheses
- LeetCode: Generate Parentheses
- 【LeetCode】Generate Parentheses 解题报告