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 }
  • 相关阅读:
    [转载] c++ cout 格式化输出浮点数、整数及格方法
    [转]
    _jobdu_1001
    关于网页授权的两种scope的区别说明
    CentOS编译安装Python3
    Apache+OpenSSL实现证书服务器提供HTTPS
    Linux下安装Tomcat服务器和部署Web应用
    记一次肉机事件--yam
    通过关闭 UseDNS和GSSAPIAuthentication选项加速 SSH登录
    Git 系列之tag的用法---为你的代码标记版本号
  • 原文地址:https://www.cnblogs.com/godlei/p/5642159.html
Copyright © 2011-2022 走看看