LeetCode——Generate Parentheses
来源:互联网 发布:淘宝土家酱香饼纸袋 编辑:程序博客网 时间:2024/05/21 22:46
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:
"((()))", "(()())", "(())()", "()(())", "()()()"
public class Solution { public List<String> generateParenthesis(int n) { List list = new ArrayList<String>();List list_2 = new ArrayList<String>();String str = new String();str = "";if (n == 0)return null;if (n == 1) {list.add("()");return list;}list_2 = generateParenthesis(n - 1);Iterator ite = list_2.iterator();while (ite.hasNext()) {str = (String) ite.next();list.add("(" + str + ")");list.add("()"+str);list.add(str+"()");}list.remove(list.size() - 1);return list; }}
Submission Result: Wrong Answer
Input:4Output:["(((())))","()((()))","((()))()","(()(()))","()()(())","()(())()","((())())","()(())()","(())()()","((()()))","()(()())","(()())()","(()()())","()()()()"]Expected:["(((())))","((()()))","((())())","((()))()","(()(()))","(()()())","(()())()","(())(())","(())()()","()((()))","()(()())","()(())()","()()(())","()()()()"]
Submission Result: Wrong Answer
Input:4Output:["(((())))","()((()))","((()))()","(()(()))","()()(())","()(())()","((())())","()(())()","(())()()","((()()))","()(()())","(()())()","(()()())","()()()()"]Expected:["(((())))","((()()))","((())())","((()))()","(()(()))","(()()())","(()())()","(())(())","(())()()","()((()))","()(()())","()(())()","()()(())","()()()()"]
。。。测试了一下发现和list中排列顺序还有关系。。题目也没说
Java代码;
public class Solution { public List<String> generateParenthesis(int n) { List list = new ArrayList<String>();List list_2 = new ArrayList<String>();String str = new String();str = "";if (n == 0)return null;if (n == 1) {list.add("()");return list;}list_2 = generateParenthesis(n - 1);Iterator ite = list_2.iterator();while (ite.hasNext()) {str = (String) ite.next();list.add("(" + str + ")");// list.add("()"+str);// list.add(str+"()");}ite = list_2.iterator();while (ite.hasNext()) {str = (String) ite.next();// list.add("("+str+")");// list.add("()" + str);list.add(str + "()");}ite = list_2.iterator();while (ite.hasNext()) {str = (String) ite.next();// list.add("("+str+")");list.add("()" + str);// list.add(str + "()");}list.remove(list.size() - 1);return list; }}
Submission Result: Wrong Answer
Input:4Output:["(((())))","((()()))","((())())","(()()())","(()(()))","((()))()","(()())()","(())()()","()()()()","()(())()","()((()))","()(()())","()(())()","()()()()"]Expected:["(((())))","((()()))","((())())","((()))()","(()(()))","(()()())","(()())()","(())(())","(())()()","()((()))","()(()())","()(())()","()()(())","()()()()"]
我是服了这个排序的逻辑了
Java代码:public class Solution { public ArrayList<String> generateParenthesis(int n) { ArrayList<String> res = new ArrayList<String>(); if (n <= 0) return res; StringBuilder sb = new StringBuilder(); generate(n, n, sb, res); return res; } private void generate(int l, int r, StringBuilder sb, ArrayList<String> res) { if (r < l) return; if (l == 0 && r == 0) { res.add(sb.toString()); } if (l > 0) { sb.append("("); generate(l - 1, r, sb, res); sb.deleteCharAt(sb.length() - 1); } if (r > 0) { sb.append(")"); generate(l, r - 1, sb, res); sb.deleteCharAt(sb.length() - 1); } }}
网上找了一个答案,才发现解题思路和我完全不一样。。。怪不得测试集合里的排序这么奇葩
Submission Result: Wrong Answer
Input:4Output:["(((())))","((()()))","((())())","(()()())","(()(()))","((()))()","(()())()","(())()()","()()()()","()(())()","()((()))","()(()())","()(())()","()()()()"]Expected:["(((())))","((()()))","((())())","((()))()","(()(()))","(()()())","(()())()","(())(())","(())()()","()((()))","()(()())","()(())()","()()(())","()()()()"]
Submission Result: Wrong Answer
Input:4Output:["(((())))","((()()))","((())())","(()()())","(()(()))","((()))()","(()())()","(())()()","()()()()","()(())()","()((()))","()(()())","()(())()","()()()()"]Expected:["(((())))","((()()))","((())())","((()))()","(()(()))","(()()())","(()())()","(())(())","(())()()","()((()))","()(()())","()(())()","()()(())","()()()()"]
我是服了这个排序的逻辑了
Java代码:
public class Solution { public ArrayList<String> generateParenthesis(int n) { ArrayList<String> res = new ArrayList<String>(); if (n <= 0) return res; StringBuilder sb = new StringBuilder(); generate(n, n, sb, res); return res; } private void generate(int l, int r, StringBuilder sb, ArrayList<String> res) { if (r < l) return; if (l == 0 && r == 0) { res.add(sb.toString()); } if (l > 0) { sb.append("("); generate(l - 1, r, sb, res); sb.deleteCharAt(sb.length() - 1); } if (r > 0) { sb.append(")"); generate(l, r - 1, sb, res); sb.deleteCharAt(sb.length() - 1); } }}
网上找了一个答案,才发现解题思路和我完全不一样。。。怪不得测试集合里的排序这么奇葩
0 0
- LeetCode——Generate Parentheses
- LeetCode——Generate Parentheses
- LeetCode——Generate Parentheses
- leetcode——Generate Parentheses
- leetcode——Generate Parentheses
- leetcode 022 —— Generate Parentheses
- LeetCode题解——Generate Parentheses
- LeetCode OJ——Generate Parentheses
- Leetcode——22. Generate Parentheses
- LeetCode算法题——Generate Parentheses
- leetcode——22——Generate Parentheses
- leetcode第22题——**Generate Parentheses
- LeetCode 22. Generate Parentheses 题解 —— Java
- LeetCode算法题——22. Generate Parentheses
- LeetCode刷题(C++)——Generate Parentheses(Medium)
- LeetCode 22 — Generate Parentheses(C++ Java Python)
- 从leetcode—Generate Parentheses看卡特兰数
- LeetCode: Generate Parentheses
- back for creepcrack.inp
- 背包问题-暴力求解
- 怎么修改myeclipse 中用的jdk版本
- Linux下查看网卡驱动和版本信息
- oracle substr函数
- LeetCode——Generate Parentheses
- HTML5 audio API的研究与学习1
- 胡适:毕业赠言
- 瞬变抑制二极管的选型
- Android--eclipse中android工程打成jar包
- iPhone5s不能发短信怎么办?iPhone5s不能发短信解决
- 实现Launcher默认壁纸、选择壁纸定制化功能
- Android 异步加载图片,使用LruCache和SD卡或手机缓存,效果非常的流畅
- 整数溢出