zoukankan      html  css  js  c++  java
  • Leecode no.22 括号生成

    package leecode;

    import java.util.ArrayList;
    import java.util.List;
    import java.util.Stack;

    /**
    * 22. 括号生成
    *
    * 数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。
    *
    * 有效括号组合需满足:左括号必须以正确的顺序闭合。
    *
    * @author Tang
    * @date 2021/9/22
    */
    public class GenerateParenthesis {

    List<String> resultList = new ArrayList<>();

    int num;

    /**
    * 二叉树
    * 前序遍历 根左右
    *
    *
    * @param n
    * @return
    */
    public List<String> generateParenthesis(int n) {
    num = n;
    //括号总个数
    generator("", "(", 0, 0);
    return resultList;
    }

    /**
    *
    * @param str 拼接的字符串
    * @param append 下次要添加的括号
    * @param left 左括号数量
    * @param right 右括号数量
    */
    private void generator(String str, String append, int left, int right) {
    String line = str;

    //保证左括号数量始终大于等于右括号数量
    if(left == right && ")".equals(append)) {
    return;
    }

    if("(".equals(append)) {
    left++;
    }else {
    right++;
    }

    line += append;

    //凑齐括号 召唤神龙
    if(left + right == num * 2) {
    resultList.add(line);
    return;
    }

    if(left < num) {
    generator(line, "(", left, right);
    }

    if(right < num) {
    generator(line, ")", left, right);
    }

    }



    public static void main(String[] args) {
    System.out.println(new GenerateParenthesis().generateParenthesis(3));
    }
    }
  • 相关阅读:
    字符串型
    字符型
    实型(浮点型)
    sizeof
    数据类型
    标识符
    Win32汇编
    Win32汇编
    C# 语言程序设计笔记
    鬼泣4:寻找无限生命/剑气/暴怒
  • 原文地址:https://www.cnblogs.com/ttaall/p/15319806.html
Copyright © 2011-2022 走看看