最長有效括號

2021-10-03 03:26:45 字數 998 閱讀 6390

1、題目描述

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

示例 1:

輸入: 「(()」

輸出: 2

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

示例 2:

輸入: 「)()())」

輸出: 4

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

2、思路分析

/**

* 以")(「為例

定義兩個指標,left,right乙個記錄左括號的數量,乙個記錄右括號的數量,

* 遍歷字串 ,如果第乙個字元是(,那麼left++,繼續遍歷,如果是),right++,

* 若left==right,取left/right2的最大值

* 若第乙個字元是右括號,也就是right>left,將left和right重新置為0,繼續遍歷,直至找到第乙個左括號為止

* 然後還需要從後往前遍歷一次字串,如果」(()「左括號的長度大於右括號,就需反著遍歷

** @param s=」)("

* @return

*/

public

static

intlongestvalidparentheses

(string s)

else

if(leftelse

if(left==right)

} left=right=0;

for(

int i = s.

length()

-1; i >=

0; i--

)else

if(left>right)

else

if(left==right)

}return max;

}

最長有效括號

leedcode32 給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2解釋 最長有效括號子串為 示例 2 輸入 輸出 4解釋 最長有效括號子串為 思路 首先生成乙個長度和s一樣的陣列dp,dp i 表示以i結尾的字元的最長有效括號子串長度。顯然dp 0 0 假...

最長有效括號

給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2解釋 最長有效括號子串為 示例 2 輸入 輸出 4解釋 最長有效括號子串為 思路 解法1 借助棧 借助棧來求解,需要定義個start變數來記錄合法括號串的起始位置,我們遍歷字串,如果遇到左括號,則將當前下標壓入棧...

最長有效括號

給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。輸入 輸出 2 解釋 最長有效括號子串為 輸入 輸出 4 解釋 最長有效括號子串為 用陣列dp i 表示括號串s i 結尾的最大括號字串長度。當 s i 是 時,dp i 一定為0。當s i 為 時,判斷s i 1 是否為 s i 1 ...