【C++】【LeetCode】22. Generate Parentheses
来源:互联网 发布:sql insert into 多表 编辑:程序博客网 时间:2024/05/22 10:37
题目
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
[
“((()))”,
“(()())”,
“(())()”,
“()(())”,
“()()()”
]
思路
这道题是参考了LeetCode上一个解决方案。通过递归,选择“(”或者“)”加到string后面。如果每添加一个“(”,就把要添加的“)”的数目加1,同时要添加的“(”数目减1。每添加一个“)”,就把要添加的“)”的数目减1。直到“(”,“)”的要添加的数都为0。
代码
class Solution {public: vector<string> generateParenthesis(int n) { vector<string> result; string str = ""; helper(result, str, n, 0); //左括号的计数从n开始,右括号的计数从0开始。因为无论何时添加左括号总是没错的,但是随意添加右括号可能会导致string不正确,所以只有在string中有未配对的左括号的情况下才能添加右括号。 return result; } void helper(vector<string> &result, string str, int n, int m) { if (n==0 && m==0) { result.push_back(str); return; } if (m>0) { helper(result, str+")", n, m-1); } if (n>0) { helper(result, str+"(", n-1, m+1); } }};
阅读全文
0 0
- 【C++】【LeetCode】22. Generate Parentheses
- [LeetCode]22.Generate Parentheses
- LeetCode --- 22. Generate Parentheses
- LeetCode 22.Generate Parentheses
- [Leetcode] 22. Generate Parentheses
- 【LeetCode】22.Generate Parentheses
- [leetcode] 22.Generate Parentheses
- 【leetcode】22. Generate Parentheses
- Leetcode-22.Generate Parentheses
- [leetcode] 22. Generate Parentheses
- 22. Generate Parentheses LeetCode
- leetcode 22. Generate Parentheses
- [LeetCode]22. Generate Parentheses
- leetcode 22. Generate Parentheses
- leetcode 22. Generate Parentheses
- LeetCode 22. Generate Parentheses
- [LeetCode]22. Generate Parentheses
- LeetCode *** 22. Generate Parentheses
- VMare Workstation Pro12.5.2+ubuntu-160.04.2-desktop-amd64
- 深入理解Java并发之synchronized实现原理
- LintCode-排序专题总结
- 排序总结
- oracle的case-when,row_number(),trunc()函数
- 【C++】【LeetCode】22. Generate Parentheses
- 【算法】程序猿不写代码是不对的68
- 大小写转换的好方法
- C++父子类继承时的隐藏、覆盖、重载
- Xcode自带调试命令集
- 面试笔试问到一些问题
- Spark配置属性详解
- BZOJ 3643 Phi的反函数
- Pandas index详解