来个简单点的写法,主要就是考虑什么时候放左右括号的问题
class Solution {
public:
/**
*
* @param n int整型
* @return string字符串vector
*/
void dfs(string s, int left, int n, vector<string> &ans){
if(s.size() == 2*n){
ans.push_back(s);
return ;
}
if(left < n){
dfs(s+"(", left+1, n, ans);
}
if(left && left*2 > s.size()){
dfs(s+")", left, n, ans);
}
return ;
}
vector<string> generateParenthesis(int n) {
// write code here
vector<string> ans;
dfs("(", 1, n, ans);
return ans;
}
};