LeetCode: 22. Generate Parentheses
2017-09-17 21:44
459 查看
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:
题意:打印n对括号能够形成的所有合法括号。
分析:合法括号即从前向后遍历时,遇到左括号加一,遇到右括号减一,在任何位置count值必然大于等于一。因此,可以维持一个count值和record数组以及index,count值表示从0到index的和,record记录前index位置的括号情况,index就是下标。
代码如下:
For example, given n = 3, a solution set is:
[ "((()))", "(()())", "(())()", "()(())", "()()()" ]
题意:打印n对括号能够形成的所有合法括号。
分析:合法括号即从前向后遍历时,遇到左括号加一,遇到右括号减一,在任何位置count值必然大于等于一。因此,可以维持一个count值和record数组以及index,count值表示从0到index的和,record记录前index位置的括号情况,index就是下标。
代码如下:
class Solution { public List<String> generateParenthesis(int n) { List<String> result=new ArrayList<String>(); makeString(result,0,new int[2*n],0,n); return result; } public void makeString(List<String> result,int count,int[]record,int index,int n){ if(index>=2*n-1&&count==0){ StringBuilder s=new StringBuilder(); for(int i=0;i<2*n;i++) if(record[i]==1) s.append("("); else s.append(")"); result.add(s.toString()); } if(index<2*n){ record[index]=1; makeString(result,count+1,record,index+1,n); if(count>0){ record[index]=-1; makeString(result,count-1,record,index+1,n); } } } }
相关文章推荐
- leetcode 22. Generate Parentheses
- [LeetCode]22. Generate Parentheses
- [LeetCode]22. Generate Parentheses
- [LeetCode]--22. Generate Parentheses
- [leetcode]22. Generate Parentheses
- LeetCode22. Generate Parentheses
- Leetcode 22. Generate Parentheses
- LeetCode --- 22. Generate Parentheses
- LeetCode *** 22. Generate Parentheses
- LeetCode: 22. Generate Parentheses
- Leetcode 22. Generate Parentheses
- leetcode 22. Generate Parentheses
- Leetcode -- 22. Generate Parentheses
- LeetCode22. Generate Parentheses
- [leetcode] 22. Generate Parentheses 解题报告
- [LeetCode] 22. Generate Parentheses
- LeetCode-22. Generate Parentheses
- [LeetCode] 22. Generate Parentheses
- 蜗牛慢慢爬 LeetCode 22. Generate Parentheses [Difficulty: Medium]
- LeetCode 22. Generate Parentheses