难度:中等。
标签:字符串,回溯算法。
与之前
LeetCode 17.电话号码的字母组合
那道题特别像。
正确解法:
class Solution {
void get_result(vector<string>& result_list, string res, int n, int a, int b){
if(a == n && b == n){
result_list.push_back(res);
return;
}
if(a < b || a < n){
res.push_back('(');
get_result(result_list, res, n, a+1, b);
res.pop_back();
}
if(b < a){
res.push_back(')');
get_result(result_list, res, n, a, b+1);
res.pop_back();
}
}
public:
vector<string> generateParenthesis(int n) {
vector<string> result;
if(n == 0){
result.push_back("");
return result;
}
string temp;
int a = 0, b = 0;
get_result(result, temp, n, a, b);
return result;
}
};
版权声明:本文为almost_afei原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。