Leetcode Generate Parentheses
来源:互联网 发布:淘宝童装店标图片大全 编辑:程序博客网 时间:2024/06/04 19:39
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
Idea:
A tricky backtracking problem. Given n pairs of parentheses, there will be n '(' and n ')'. If we have already had l '(' and r ')' in the previous part string, if l==n, next time we can only append next ')' go the previous part to get a valid combination. if l<n, next time we can append one '(' to the previous string and use backtracking the consider next condition. if l<n while r<l, this time we also can add one ')', and go to next recursive function.
code:
public class Solution { public List<String> generateParenthesis(int n) { List<String> res = new ArrayList<String>(); StringBuffer buffer = new StringBuffer(); dfs(res, buffer, n, 0, 0); return res; } private void dfs(List<String> res, StringBuffer buffer, int n, int left, int right){ if(left==n){ int size = buffer.length(); for(int i=0;i<left-right;i++){ buffer.append(')'); } res.add(buffer.toString()); buffer.setLength(size); return; } buffer.append('('); dfs(res, buffer, n, left+1, right); buffer.setLength(buffer.length()-1); if(left>right){ buffer.append(')'); dfs(res, buffer, n, left, right+1); buffer.setLength(buffer.length()-1); } }}
0 0
- LeetCode: Generate Parentheses
- LeetCode: Generate Parentheses
- [Leetcode] Generate Parentheses
- leetcode 51: Generate Parentheses
- [LeetCode] Generate Parentheses
- Leetcode: Generate Parentheses
- LeetCode Generate Parentheses
- 【leetcode】Generate Parentheses
- [LeetCode]Generate Parentheses
- Leetcode Generate Parentheses
- LeetCode-Generate Parentheses
- LeetCode: Generate Parentheses
- LeetCode - Generate Parentheses
- LeetCode 22: Generate Parentheses
- LeetCode: Generate Parentheses
- Leetcode: Generate Parentheses
- 【leetcode】Generate Parentheses
- Leetcode: Generate Parentheses
- Java多线程 要点分析
- jasig CAS实现单点登录(数据库认证)
- 彩虹表与带盐Hash
- 微信提示redirect_uri参数错误
- Python中几个input方法
- Leetcode Generate Parentheses
- Tomcat源码分析(一)------ 架构
- 通信中术语解释
- Tomcat源码分析(二)------ 一次完整请求的里里外外
- 一个ListView里面两个按钮, 我点加数字就增加一,减就减一(0就不减)
- tmcat和appach http 服务器分别是用什么语言编写的
- Glide-Android下高效加载多媒体文件
- [2010]:水仙花数
- Vundle - 配置好你的Vim(前端开发)