2015.04.01 Leetcode Generate Parentheses
来源:互联网 发布:怎么清理mac上的其他 编辑:程序博客网 时间:2024/06/10 08:44
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
题解: 需要用dfs -backtracking.
给定的n为括号对,也就是有n个左括号和n个右括号的组合。
按照顺序尝试,直到左右括号都尝试完了,这就可以得到一个解。
注意: 左括号的数目不能大于右括号。避免“)(” 这样不合法的解出现。
/** * Generate Parantheses * * https://leetcode.com/problems/generate-parentheses/ * 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: * * "((()))", "(()())", "(())()", "()(())", "()()()" * * Tags: Backtracking. String */ import java.util.*; public class GenerateParenthesis { public static void main(String[] args) { System.out.println(generateParenthesis(3));System.out.println();System.out.println(generateParenthesis(4)); } /** * Backtracking * Helper function use left and right to represent available parentheses * Initialize left as n, right as n */ public static List<String> generateParenthesis(int n) { List<String> res = new ArrayList<String>();String current = new String(); // current result if (n <= 0) return res; dfs(res, current, n, n); return res; } /** * @param left available left parentheses * @param right available right parentheses * @param current current result * @param res the result list of the problem */ public static void dfs( List<String> res, String current, int left, int right) {if (left > right) // deal with ")("return; if (left == 0 && right == 0) { res.add( new String(current)); return; } if (left > 0) dfs( res, current + "(", left-1, right); // add (, right + 1 if (right > 0) dfs(res , current+ ")", left, right-1); // add ), right - 1 }}
参考
http://www.cnblogs.com/springfor/p/3886559.html
0 0
- 2015.04.01 Leetcode Generate Parentheses
- 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
- 整数转ip地址的实现
- Apache Ranger剖析:Hadoop生态圈的安全管家
- 通过客户端IP限制投票次数
- 设计张程序员专用壁纸
- 已知空间三角形的三个顶点,计算其归一化的法向量
- 2015.04.01 Leetcode Generate Parentheses
- vim多窗口使用技巧
- Sublime Text
- 高性能网站架构设计之缓存篇
- android 倒计时显示时分秒
- 角谷猜想(Collatz conjecture)验证算法C#实现
- IOS ----UIButton用法详解
- java上传附件,批量下载附件
- android 使用asm.jar将android手机屏幕投影到电脑上