采用递归算法
代码
class Solution {
public:
vector<string> generateParenthesis(int n) {
string tempResult;
vector<string> result;
generateParenthesisHelper(result, tempResult, n, n);
return result;
}
void generateParenthesisHelper(vector<string> &result, string & tempResult ,int left, int right)
{
if(left>right)
return ;
if(left==0&&right==0)
{
result.push_back(tempResult);
return ;
}
if(left>0)
{
tempResult.push_back('(');
generateParenthesisHelper(result, tempResult, left-1, right);
tempResult.pop_back();
}
if(right>0)
{
tempResult.push_back(')');
generateParenthesisHelper(result, tempResult, left, right-1);
tempResult.pop_back();
}
}
};