找出最長有效括號

// 給你一個只包含 '(' 和 ')' 的字符串,找出最長有效(格式正確且連續(xù))括號子串的長度。
    const s = '(())))()'
    function longestValidParentheses(s) {
        let maxLen = 0
        let stack = []
        // 初始化一個參照物
        stack.push(-1)
        for (let i = 0; i < s.length; i++) {
            if (s[i] == '(') {
                // ( 入棧   )出棧
                stack.push(i)
            } else {
                // )的情況 出棧
                stack.pop()
                if (stack.length) {
                    // 每次出棧 計算下當前有效連續(xù)長度
                    // 如何計算連續(xù)長度 當前位置 - 棧頂下標
                    maxLen = Math.max(maxLen, i - stack[stack.length - 1])
                    console.log(maxLen, 'maxLen', i, i - stack[stack.length - 1]);
                } else {
                    //棧為空時 放入右括號參照物 表示從這個下標開始 需要重新計算長度
                    stack.push(i)
                }
            }
            console.log(i, stack);
        }
        return maxLen
    }
    longestValidParentheses(s)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容