zoukankan      html  css  js  c++  java
  • 【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 }
  • 相关阅读:
    文档浏览类的网站该如何设计?
    如何将动态生成Word文件
    Word 2007 文档结构图混乱
    Spring 配置 Spring JPA 发生错误的解决方法
    今天开始着手原来Office系统的重构
    Jetty入门
    推荐一个C语言学习教程
    博客园的第一天
    我与solr(一)--solr的配置与安装
    XML解析工具类
  • 原文地址:https://www.cnblogs.com/godlei/p/5642159.html
Copyright © 2011-2022 走看看