程式設計之美 最長有效括號字串

2021-08-17 21:12:33 字數 1054 閱讀 8306

給定字串,僅包含左括號『(』和右括號『)』,它可能不是括號匹配的,設計演算法,找出最長匹配的括號子串,返回該子串的長度。

如:(():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 輸出描述 輸出乙個整數,代表括號字串...