演算法基礎 棧相關 最長有效的括號

2021-10-23 14:57:53 字數 694 閱讀 5980

給定乙個只包含 『(』 和 『)』 的字串,找出最長的包含有效括號的子串的長度。

示例 1:

輸入: "(()"

輸出: 2

解釋: 最長有效括號子串為 "()"

示例 2:

輸入: ")()())"

輸出: 4

解釋: 最長有效括號子串為 "()()"

我們可以通過棧,在遍歷給定字串的過程中,判斷到目前位置的子串的有效性。然後更新最長的有效長度。

具體做法

但是示例2中我們可見,一開始我們掃瞄到的就是),此時棧為空,無法彈出。並且如果在掃瞄的過程中,棧為空,我們再次遇到),也不能繼續向下進行。因此我們需要設立乙個參照物,確保棧在整個掃瞄的過程中不為空,可計算。

/**

* @param s

* @return

*/var

longestvalidparentheses

=function

(s) stack.

pop();

// 遇到右括號,棧頂出棧

if(stack.length ==0)

else

}return maxlen;

};

32 最長有效括號 (棧)

給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 困難 題意是找到最長的連續有效括號 如s 有效的連續括號只有 答案應該是2.一開始理解錯了,以為是要求所有有效括號的總長度。分析 利...

演算法題 最長有效括號

題目描述 給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 解法一 使用棧來儲存元素下標,從下標來計算長度。時間複雜度 o n n為字串長度,遍歷每個字串元素。空間複雜度 o n 棧...

leetcode 最長有效括號 線性dp,棧

給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 有效括號最小有兩種情況 左括號和右括號相鄰。左括號和右括號不相鄰。基於這兩種基本情況設計dp.設dp i 是以s i 字元結尾的最長...