本文主要是介绍LeetCode 22 Generate Parentheses,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题意:
用n组小括号,生成所有满足括号匹配的序列。
思路:
我用了比较粗暴的方式,用set不断迭代答案,每次迭代使得括号组数+1直到n为止。
还有一种方法是dfs构造,因为长度已经确定,所以每个位置要么放(要么放),利用前缀和维护括号匹配即可。
代码:
class Solution {
public:vector <string> generateParenthesis(int n) {set <string> tmp{""};while (n--) {tmp = grow(tmp);}vector <string> ans;for (auto it : tmp) {ans.push_back(it);}return ans;}private:set <string> grow(set <string> &fa) {set <string> son;for (auto it : fa) {son.insert("(" + it + ")");for (int i = 0; i < it.size(); ++i) {son.insert(it.substr(0, i + 1) + "()" + it.substr(i + 1, it.size() - i - 1));}}return son;}
};
这篇关于LeetCode 22 Generate Parentheses的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!