zoukankan      html  css  js  c++  java
  • leetcode — generate-parentheses

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.List;
    
    /**
     * Source : https://oj.leetcode.com/problems/generate-parentheses/
     *
     * Created by lverpeng on 2017/7/11.
     *
     * Given n pairs of parentheses, write a function to generate all combinations of well-formed parentheses.
     *
     * For example, given n = 3, a solution set is:
     *
     * "((()))", "(()())", "(())()", "()(())", "()()()"
     *
     */
    public class GenerateParentheses {
    
        /**
         * 生成的括号个数是2n个(包括左括号和右括号),而且1-2n范围内左括号的个数一定大于右括号的个数
         *
         * @param n
         * @return
         */
        public List<String> generate (int n) {
            List<String> list = new ArrayList<String>();
            generate(n, n, list, "");
            return list;
        }
    
        /**
         * 使用深度优先算法
         *
         * @param left      左括号的个数
         * @param right     右括号的个数
         * @param result    最终字符串的保存在这里
         * @param str
         */
        private void generate (int left, int right, List<String> result, String str) {
            if (left == 0 && right == 0) {
                result.add(str);
            }
            if (left > 0) {
                generate(left - 1, right, result, str + "(");
            }
    
            // 维护括号配对的规则,先有左括号,才能有右括号
            if (left < right && right > 0) {
                generate(left, right - 1, result, str + ")");
            }
        }
    
        public static void main(String[] args) {
            GenerateParentheses generateParentheses = new GenerateParentheses();
            List<String> list = generateParentheses.generate(2);
            System.out.println(Arrays.toString(list.toArray(new String[list.size()])));
        }
    
    
    }
    
  • 相关阅读:
    标题:CSS-button添加display:block;属性后自动换行!
    JS-遍历对象
    JS-获取对象的长度大小
    HTML-span和div区别
    SQL-Foreach标签
    JS_Select_option切换自动触发事件
    JS_Select赋值的几种方式
    加密系统文件夹
    JS-返回上一页
    metronic 4.5.7开发环境下, 在Windows 10上安装了10.16.0版本的node js之后,导致node sass无法加载
  • 原文地址:https://www.cnblogs.com/sunshine-2015/p/7379652.html
Copyright © 2011-2022 走看看