【leetcode】22. Generate Parentheses

题目描述:

Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.

解题分析:

这类题一般都要用递归的方法来解决。需要设两个集合类分别存储待匹配的(,)的个数。

这里需要明白一点:当待匹配的(的个数永远不小于待匹配的)的个数时只能匹配(,否则会导致错误。(可以自己在纸上试一下就好理解了),其余情况可以考虑匹配( 和)两种情况下可能的结果。

具体代码:

 1 public class Solution {
 2     public static List<String> generateParenthesis(int n){
 3         List<String> result = new ArrayList<String>();
 4         List<Character> array1=new LinkedList<Character>();
 5         List<Character> array2=new LinkedList<Character>();
 6         char[] array = new char[2*n];
 7         for(int i=0;i<n;i++){
 8             array1.add('(');
 9             array2.add(')');
10         }
11         fun1(array1,array2,result,array,0);
12         return result;
13     }
14     public static void fun1(List<Character> array1,List<Character> array2,List<String> result,char[] array,int index){
15         if(index==array.length-1){
16             if(array1.size()==0&&array2.size()==1){
17                 array[index]=array2.remove(0);
18                 result.add(new String(array));
19                 array[index]=' ';
20                 array2.add(')');
21                 return;
22             }
23             else{
24                 return;
25             }
26         }
27         //只能填'('
28         if(array1.size()>=array2.size()){
29             array[index]=array1.remove(0);
30             fun1(array1,array2,result,array,index+1);
31             array[index]=' ';
32             array1.add('(');
33         }
34         else{
35             //先试'('
36             if(array1.size()>0){
37                 
38                 array[index]=array1.remove(0);
39                 fun1(array1,array2,result,array,index+1);
40                 array[index]=' ';
41                 array1.add('(');
42             }    
43             //再试')'
44             array[index]=array2.remove(0);
45             fun1(array1,array2,result,array,index+1);
46             array[index]=' ';
47             array2.add(')');
48         }
49         
50     }
51 }
原文地址:https://www.cnblogs.com/godlei/p/5642159.html