一、问题描述
Description: 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 {
vector<string> res;
public:
vector<string> generateParenthesis(int n) {
string str;
generate(n, 0, 0, str);
return res;
}
void generate(int n, int i, int j, string str) {
if(i==n && j==n) // 递归终止条件
res.push_back(str);
if(i<n) // 左括号没n个就可以添加
generate(n, i+1, j, str+'(');
if(j<n && i>j) // 右括号,比左括号少的时候才可以添加
generate(n, i, j+1, str+')');
}
};
参数 i,j 分别表示当前字符串str中左括号与右括号的个数。 注意:右括号, 只有在比左括号少的时候,才可以添加。
LeetCode答案源代码:https://github.com/SongLee24/LeetCode