leetcode 022 Generate Parentheses
2016-04-08 00:48
288 查看
题目
22. Generate ParenthesesGiven n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
For example, given n = 3, a solution set is:
"((()))", "(()())", "(())()", "()(())", "()()()"
思路:
利用递归求解,递归这玩意不好解释,建议调试几次,追踪代码执行过程,用机器的方式去思考。代码:
private List<String> list; public List<String> generateParenthesis(int n) { String s = ""; list = new ArrayList<>(); generate(n, n, s); return list; } void generate(int left, int right, String s) { if(left != 0) { generate(left - 1, right, s + "("); if(left != right) { generate(left, right - 1, s + ")"); } } else { if(right != 0) { int tmp = right; StringBuilder builder = new StringBuilder(s); while(tmp-- > 0) builder.append(')'); list.add(builder.toString()); } } }
结果细节(图):
相关文章推荐
- php实习的tips(结束符的问题)
- 价值观
- javascript
- 海思lowlevel_init.S简单分析
- Android中使用RadioButton实现QQ底部图片切换
- UIViewController中addChildViewController的作用
- 技术学习
- 快速排序
- eclipse 使用gradle构建系统时候报错
- TortoiseSVN中分支和合并实践【转】
- php的tips(接口结束符问题)
- Java 日历的制作 心得 写给自己
- java基础-----2016.4.8
- 求str最长回文子序列是求这个原字符串和它反转字符串的最长公共子序列。
- MySql主从数据库和读写分离简单剖析
- 注册cell可重用单元格注意事项
- Microsoft Build 2016 有关微软公有云Azure
- Linux环境下多进程和多线程的优缺点
- 海康SDK-javademo实现
- 计步器