生成括号
给定 n 对括号,请写一个函数以将其生成新的括号组合,并返回所有组合结果。
样例
给定 n = 3, 可生成的组合如下:
"((()))", "(()())", "(())()", "()(())", "()()()"
类似递归遍历二叉树的思想
public:
/**
* @param n n pairs
* @return All combinations of well-formed parentheses
*/
void makequote(int size, int leftnum, int rightnum, string &str, vector<string> &vstr)
{
if(size == 0)
{
vstr.push_back(str);
return;
}
if(leftnum>0)
{
str.insert(str.size(),"(");
makequote(size - 1, leftnum - 1, rightnum, str, vstr);
str = str.substr(0,str.size()-1);
}
if(leftnum<rightnum && rightnum>0)
{
str.insert(str.size(),")");
makequote(size - 1, leftnum , rightnum - 1, str, vstr);
str = str.substr(0,str.size()-1);
}
}
vector<string> generateParenthesis(int n) {
// Write your code here
vector<string> vstr;
string str;
makequote(2*n, n, n, str, vstr);
return vstr;
}
};
本文介绍了一种生成括号组合的算法实现,该算法通过递归方式生成所有可能的合法括号组合。针对输入的括号对数n,能够输出所有合法的括号组合方案。
549

被折叠的 条评论
为什么被折叠?



