最長有效括號

2021-10-03 15:24:05 字數 1289 閱讀 8714

題目描述:

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

方法一:

從頭遍歷字串,以i為字串的第乙個字元開始,直到找到最長的有效字串,記錄長度最長的返回即可

class

solution

else

if(flag<0)

else

if(flag==0)

} l=math.

max(l,ll);}

return l;

}}

方法二:

我們對每個偶數長度的子字串都進行判斷,並儲存目前為止找到的最長的有效子字串的長度。

class

solution}}

return max;

}public

boolean

func

(string str)

elseif(

!s.isempty()

)else

}return s.

isempty()

;}}

方法三:

class

solution

else

else}}

return max;

}}

方法四:

利用兩個計數器 leftl和 right 。首先,我們從左到右遍歷字串,對於遇到的每個『(』,我們增加 left 計算器,對於遇到的每個 『)』 ,我們增加 right 計數器。每當 left 計數器與right 計數器相等時,我們計算當前有效字串的長度,並且記錄目前為止找到的最長子字串。如果 right 計數器比 left 計數器大時,我們將 left和 right 計數器同時變回 0 。

從左到右一次,從右到左一次,向「(()」這種從左到右是遍歷不出來的,所以需要從左到右遍歷,「())」同理

class

solution

else

if(left==right)

else

if(right>left)

} left=0;

right=0;

for(

int i=len-

1;i>=

0;i--

)else

if(left==right)

else

if(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 ...