22. 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:
[
"((()))",
"(()())",
"(())()",
"()(())",
"()()()"
]
Seen this question in a real interview before? Yes
No
思路:遞歸法锌订,兩個(gè)限制條件:
1,左括號(hào)和右括號(hào)的數(shù)量都為0的時(shí)候
2,只有當(dāng)左括號(hào)<右括號(hào)的數(shù)量時(shí)才能添加右括號(hào)上去,否則無效
AC代碼:
class Solution {
public:
vector<string> generateParenthesis(int n) {
vector<string> result;
generate("",n,n,result);
return result;
}
private:
void generate(string item,int left,int right,vector<string> &result){
if(left==0&&right==0){
result.push_back(item);
return;
}
if(left>0){
generate(item+'(',left-1,right,result);
}
if(left<right){
generate(item+')',left,right-1,result);
}
}
};