Skip to content

Latest commit

 

History

History
39 lines (35 loc) · 775 Bytes

22. 括号生成.md

File metadata and controls

39 lines (35 loc) · 775 Bytes

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

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

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

solution:

/**
 * @param {number} n
 * @return {string[]}
 */
var generateParenthesis = function(n) {
    const result = []
    function generate(result, str, l, r, max) {
        if (str.length === max * 2) {
            result.push(str)
            return
        }
        if (l < max) {
            generate(result, str + '(', l + 1, r, max)
        }
        if (r < l) {
            generate(result, str + ')', l, r + 1, max)
        }
    }
    generate(result, '', 0, 0, n)
    return result
};