#include <functional>
class Solution {
public:
/**
*
* @param n int整型
* @return string字符串vector
*/
vector<string> generateParenthesis(int n) {
vector<string> res;
string path;
function<void(int, int)> recur = [&](int l, int r) -> void {
if (l == 0 && r == 0) {
res.push_back(path);
return;
}
if (l > 0) {
path += '(';
recur(l - 1, r);
path.pop_back();
}
if (r > 0 && l < r) {
path += ')';
recur(l, r - 1);
path.pop_back();
}
};
recur(n, n);
return res;
}
};
思路:递归。
每一步递归都尝试能否加左右括号。左右括号都加完了则记录当前的字符串。

京公网安备 11010502036488号