zoukankan      html  css  js  c++  java
  • LeetCode--括号生成

    题目:

      给出n代表生成括号的对数,请写出一个函数,使其能够生成所有可能的并且有效的括号组合;

      官方给出解答是使用回溯法,穷举所有可能的括号组合,并在穷举的过程中判断每一个组合的有效性,这道题判断括号组合有效性的特殊性在于,这个括号组合只包含一种类型的括号,如 '(' 和 ')' ,所以可以通过计算左括号和右括号的个数是否相等来判断有效性:

     1 import java.util.*;
     2 
     3 public class Solution {
     4     public List<String> generateParenthesis(int n) {
     5         List<String> result = new ArrayList<>();
     6         if(n > 0)
     7         {
     8             generateAll(new char[2 * n], 0, result);
     9         }
    10         return result;
    11     }
    12     
    13     public void generateAll(char[] symbol, int pos, List<String> result)
    14     {
    15         if(pos == symbol.length)             // 对每一种括号组合判断有效性
    16         {
    17             if(isValid(symbol))
    18             {
    19                 result.add(new String(symbol));
    20             }
    21         }
    22         else
    23         {                              // 穷举所有可能的括号组合
    24             symbol[pos] = '(';
    25             generateAll(symbol, pos+1, result);
    26             symbol[pos] = ')';
    27             generateAll(symbol, pos+1, result);
    28         }
    29     }
    30     
    31     public boolean isValid(char[] symbol)
    32     {
    33         int count = 0;
    34         for(int i = 0; i < symbol.length; i++){     // 对于同一类型的括号而言,判断有效性可通过判断左括号和右括号的数量是否相等
    35             if(symbol[i] == '(')
    36             {
    37                 count++;
    38             }
    39             else
    40             {
    41                 count--;
    42             }
    43             if(count < 0) return false;        // 需要注意的是,在判断过程中,右括号的数量必须小于或等于左括号的数量
    44         }
    45         return count == 0;        // 左右括号个数相等时,返回true
    46     }
    47 }
  • 相关阅读:
    一阶段11.16
    视频(一阶段)
    一阶段需求分析
    sprint计划会议内容
    金管家NABCD分析
    四则运算
    返回一个整数数组中最大子数组的和(首尾相连)
    四则运算
    返回一个二维数组最大子数组的和
    返回一个数组 最大子数组的和
  • 原文地址:https://www.cnblogs.com/OoycyoO/p/11726088.html
Copyright © 2011-2022 走看看