【leetcode】22. Generate Parentheses
2024-08-26 10:13:22
题目描述:
Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
解题分析:
这类题一般都要用递归的方法来解决。需要设两个集合类分别存储待匹配的(,)的个数。
这里需要明白一点:当待匹配的(的个数永远不小于待匹配的)的个数时只能匹配(,否则会导致错误。(可以自己在纸上试一下就好理解了),其余情况可以考虑匹配( 和)两种情况下可能的结果。
具体代码:
public class Solution {
public static List<String> generateParenthesis(int n){
List<String> result = new ArrayList<String>();
List<Character> array1=new LinkedList<Character>();
List<Character> array2=new LinkedList<Character>();
char[] array = new char[2*n];
for(int i=0;i<n;i++){
array1.add('(');
array2.add(')');
}
fun1(array1,array2,result,array,0);
return result;
}
public static void fun1(List<Character> array1,List<Character> array2,List<String> result,char[] array,int index){
if(index==array.length-1){
if(array1.size()==0&&array2.size()==1){
array[index]=array2.remove(0);
result.add(new String(array));
array[index]=' ';
array2.add(')');
return;
}
else{
return;
}
}
//只能填'('
if(array1.size()>=array2.size()){
array[index]=array1.remove(0);
fun1(array1,array2,result,array,index+1);
array[index]=' ';
array1.add('(');
}
else{
//先试'('
if(array1.size()>0){ array[index]=array1.remove(0);
fun1(array1,array2,result,array,index+1);
array[index]=' ';
array1.add('(');
}
//再试')'
array[index]=array2.remove(0);
fun1(array1,array2,result,array,index+1);
array[index]=' ';
array2.add(')');
} }
}
最新文章
- 免费开源的DotNet任务调度组件Quartz.NET(.NET组件介绍之五)
- Parcelable序列化的使用,关于intent.getParcelableArrayExtra的使用
- BZOJ 1078: [SCOI2008]斜堆
- android之handle
- 简单解释CDATA
- C#完成最简单的WebService创建及使用
- JavaScript入门
- 数组越界保护与消息传递black机制
- 解析wamp的php.ini设置不生效的原因
- CodeForces Round #279 (Div.2)
- android 国内sdk下载地址及代理, android 环境搭建
- sublime text插件
- iOS 获取当前时间以及计算年龄(时间差)
- 常用linux命令及其设置
- python测试框架nose
- Kotlin实现《第一行代码》案例“酷欧天气”
- d01
- console控制台的小问题
- What I am concerned about
- js算法初窥06(算法模式03-函数式编程)