算法 括号生成

107 阅读1分钟
    function paramEv(z) {
        let arr = []
        function xun(num) {
            let a = JSON.parse(JSON.stringify(num));
            let b = JSON.parse(JSON.stringify(num));
            let x = a.replace(/\)/g, "");
            if (x.length < z) {
                a += "("
                xun(a);
            }
            let y = b.replace(/\(/g, "");
            if (y.length < z) {
                if (b.replace(/\)/g, "").length > y.length) {
                    b += ")"
                    xun(b)
                    if (b.length == z * 2) {
                        arr.push(b)
                    }
                }
            }
        }
        xun("");
        return arr;
    };
    
    //  console.log(paramEv(3)) 
    //输出 ['((()))', '(()())', '(())()', '()(())', '()()()']
    
    //  console.log(paramEv(2)) 
    //输出 ['(())', '()()']