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));
    }
    }
  • 相关阅读:
    进阶实验2-3.3 两个有序链表序列的交集 (20分)
    习题2.7 弹球距离 (15分)
    习题2.2 数组循环左移 (20分)
    习题2.1 简单计算器 (20分)
    习题2.5 两个有序链表序列的合并 (15分)
    习题2.4 递增的整数序列链表的插入 (15分)
    线性表和链表
    C. Boboniu and Bit Operations
    D
    C. Good Subarrays
  • 原文地址:https://www.cnblogs.com/ttaall/p/15319806.html
Copyright © 2011-2022 走看看