Generate Parentheses
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: vector<string> result; void generate_string(const string str, int lpnum, int rpnum) { if (lpnum == 0 && rpnum == 0) { result.push_back(str); return; } if (lpnum > 0) generate_string(str + '(', lpnum - 1, rpnum); if (rpnum > lpnum) generate_string(str + ')', lpnum, rpnum - 1); } vector<string> generateParenthesis(int n) { result.clear(); generate_string("", n, n); return result; } };