32 最長有效括號

2022-06-03 01:21:08 字數 851 閱讀 2032

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

示例 1:

輸入: "(()"

輸出: 2

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

示例 2:

輸入: ")()())"

輸出: 4

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

思路:看到括號匹配第一想法就是棧模擬,但是他求的是連續的子串,很容易就想到動態規劃,思路見注釋

public

intlongestvalidparentheses

(string s)

//dp[i]表示以i位結尾的最長子串長度

int[

] dp =

newint

[s.length()

];dp[1]

= s.

charat(0

)=='('&&s.

charat(1

)==')'?2:

0;res = dp[1]

;for

(int i =

2; i < s.

length()

; i++

) res = math.

max(dp[i]

, res);}

else

}//以'('結尾必然不可能和前面的子串連續,即長度為0

}return res;

}

32 最長有效括號

給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 class solution return res dp i 表示以當前位置為終點的最長長度,則只能在 處更新,如果s i 1 dp...

32 最長有效括號

給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。輸入 輸出 2 解釋 最長有效括號子串為 輸入 輸出 4 解釋 最長有效括號子串為 示例沒有說明,其實 也是有效的,答案為4 class solution def longestvalidparentheses self,s str i...

32 最長有效括號

題目.high 字串首先想到dp,以第n個數為結尾的最大括號數,要麼是前面n 1的最大括號數,要麼是一第n個數結尾的括號數 package main import fmt func endlongerst s string int else if rights 0 return pairs func...