李志成的个人网站

李志成的个人网站

  • 博客
  • ·
  • 留言
  • ·
  • 友链
  • ·
  • 关于
  • ·
  • Rss

leetcode算法题-括号生成

发表于2019-03-08 06:56:06分类于算法0条评论阅读次数22

题目

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

题目地址:https://leetcode-cn.com/problems/generate-parentheses/

例如,给出 n = 3,生成结果为:

[
  "((()))",
  "(()())",
  "(())()",
  "()(())",
  "()()()"
]

代码

/**
 * @param {number} n
 * @return {string[]}
 */
var generateParenthesis = function(n) {
    
    let left;
    let right;
    const result = new Set();
    
    if(n <= 0) return [];
    
    if(n === 1) return ['()'];
    
    const rs = generateParenthesis(n - 1);
    
    for(let i = 1 ; i <= n; i++){
        for(const item of rs){
            left =  item.substring(0, i)
            right = item.substring(i)
            result.add(left + '()' + right);
        }
    }
    
    return [...result]
};

--发表评论--

🚀support markdown (* ̄▽ ̄*)ブ