算法学习-括号生成【JS实现】

  • Post author:
  • Post category:其他


括号生成

数字 n 代表生成括号的对数,请你设计一个函数,用于能够生成所有可能的并且 有效的 括号组合。

输入:n = 3

输出:[

“((()))”,

“(()())”,

“(())()”,

“()(())”,

“()()()”

]

递归

/**
 * @param {number} n
 * @return {string[]}
 */
var generateParenthesis = function(n) {
    const res = []
    if (!n) return res;
    
    const generate = (left = 0, right = 0, n, s = '') => {
        if (left === n && right === n) {
            res.push(s)
            return 
        }
        left < n && generate(left+1, right, n, s + '(')
        left > right && generate(left, right+1, n, s + ')')
    }
    
    
    generate(0, 0, n, '')
    return res
};



版权声明:本文为baidu_33591715原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。