給定乙個只包含 『(』 和 『)』 的字串,找出最長的包含有效括號的子串的長度。
示例 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 字元結尾的最長...