【LeetCode题目记录-12】所有合法的括号序列
2014-09-22 21:58
323 查看
Generate Parentheses
Given n pairsof parentheses, write a function to generate all combinations of well-formedparentheses.For example, given n = 3, a solution set is:
"((()))", "(()())","(())()", "()(())", "()()()"
【分析-非原创】下面的代码是参考中提供的,我已经看醉了。leftNum表示剩余的左括号,rightNum表示剩余的右括号,如果rightNum不为0,表明可以往下继续递归;rightNum不为0且rightNum大于leftNum,表明剩余的右括号多于剩余的左括号,此时可以添加右括号。
参考:/article/1536794.html
/** * 创建时间:2014年9月21日下午5:16:24 项目名称:Test * * @author Cao Yanfeng * @since JDK 1.6.0_21 类说明: n对括号的合法排列 */ public class GenerateParenthesesTest { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated methodstub List<String> result = generateParentheses(2); for (String string : result) { System.out.println(string); } } public static List<String>generateParentheses(int pairs) { List<String> result = newArrayList<String>(); generate(pairs, pairs, "", result); return result; } public static void generate(int leftNum, int rightNum, String s, List<String> result) { if (leftNum == 0 && rightNum == 0) { result.add(s); } if (leftNum > 0) { generate(leftNum - 1, rightNum, s + '(', result); } if (rightNum > 0 && leftNum < rightNum) { generate(leftNum, rightNum - 1, s + ')', result); } } }
相关文章推荐
- 卡特兰数(Catalan)应用:输出所有N对合法括号序列和输出所有已知进栈序列的合法出栈序列
- 【九度】题目1342:寻找最长合法括号序列II(25分)
- LeetCode 20. Valid Parentheses(合法括号序列)
- 【递归】输出给定的n对括号对的所有合法序列
- 九度 题目1337:寻找最长合法括号序列
- leetcode 301. Remove Invalid Parentheses BFS遍历得到所有合法的括号字符串 + 很棒的做法
- 九度题目1342:寻找最长合法括号序列II
- 【九度】题目1337:寻找最长合法括号序列
- 九度 题目1342:寻找最长合法括号序列II(25分)
- 打印所有合法的括号序列
- 面试题之括号匹配分析( 出栈序列是否合法,给定一个入栈序列,求所有可能的出栈序列等等)
- 括号,卡特蓝数,所有合法序列小米面试
- [Jobdu] 题目1337:寻找最长合法括号序列
- 实现所有括号的合法匹配
- [LeetCode] 最长合法括号 longest valid parentheses
- 小米面试题:N对括号的所有合法状态
- 20.Valid Parentheses&合法括号序列判断
- 九度笔记之 1342:寻找最长合法括号序列II(25分)-给括号当红娘,解决最长合法字符串问题
- leetcode:Permutations II (序列所有无重复排列)【面试算法题】
- leetcode:Permutations (序列所有排列)【面试算法题】