給定字串,僅包含左括號『(』和右括號『)』,它可能不是括號匹配的,設計演算法,找出最長匹配的括號子串,返回該子串的長度。
如:(():2
()():4
()(()):6
(()()):6
given a string containing just the characters'('and')', find the length of the longest valid (well-formed) parentheses substring.
for"(()", the longest valid parentheses substring is"()", which has length = 2.
another example is")()())", where the longest valid parentheses substring is"()()", which has length = 4.
對於「(()」
i=0:(;
i=1:(;
i=2:);
因為,i=0是左括號(,入棧:
棧:(因為i=1是左括號(,入棧:
棧:( (
因為i=2是右括號),和棧頂元素(下面紅色的那個)進行匹配:
棧:( (
所以棧頂元素出棧:
棧:(因為i已經遍歷到最後,且棧不為空,所以令最後乙個i=2減去棧頂元素i=0,即:2 - 0 = 2
對於「())」
因為,i=0是左括號(,入棧:
棧:(因為i=1是右括號),和棧頂元素(下面紅色的那個)進行匹配:
棧:(所以棧頂元素出棧:
棧:此時棧為空,因此ml = max( (i= 1) - (start = 0), ml ) = 1
因為,i=2是左括號),且已經遍歷到最後,且棧為空,所以ml = max( (i=1) - (start=-1)), ml=1) = 2
class
solution
else
ss.push(i);
} return
max;
} };
字串 最長有效括號
給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 思路 記錄左右括號的個數 相等了就比較更新答案 如果count2 count1 就結算 從0開始 注意 還要從右向左遍歷!不然會漏掉...
最長有效括號 字串匹配題型
輸入 輸出 2 解釋 最長有效括號子串為 輸入 輸出 4 解釋 最長有效括號子串為 最直觀的棧解法,通過下標減下標值 class solution else if i dp i 1 0 s.charat i dp i 1 1 maxans math.max maxans,dp i return ma...
括號字串的最長有效長度
括號字串的最長有效長度 給定乙個括號字串str,返回最長的能夠完全正確匹配括號字元字串的長度。輸入描述 輸出一行字串,代表str 1 l engt hstr 105 str 1 leq length leq 10 5 str 1 leng thst r 1 05 輸出描述 輸出乙個整數,代表括號字串...