2 4 字串 括號字串的最長有效長度

2021-10-22 10:43:06 字數 1051 閱讀 6105

給定乙個括號字串,返回最長的有效括號子串

分析:1)同樣以動態規劃思維解決:

首先,dp應該代表什麼?

以i位置的字元結尾的最長有效括號子串.

?此類dp值代表強制性以i結尾計算值的特徵為(如:最長公共子串):題目要求中符合條件的值一定都是連續的?

2)通過dp值來解決動態規劃通式,dp值代表以i位置字元結尾的最長有效括號子串

① 根據dp值可知 若i位置的字元不為 右括號 ) 而是左括號 ( 那一定是無效的。此時我們只需要分析 右括號結尾的情況

②以 ) 結尾 來分析,那麼dp[i]的值就涉及到 前乙個dp值,左括號是需要右括號匹配的,但是要做到最長括號字串,那麼通常情況下前乙個也就是i-1的值我不取直接就是左括號,那就繼續取右括號,那麼要找到能與i對應的左括號,我就需要把i-1位置的右括號先解決掉,那這個時候i-1又取決於dp[i-1]當解決掉i-1,與i相對應的需要匹配的值位置就為i- dp[i-1] - 1,

③通過2解決掉i位置的括號後,還需要特別注意的是,當與i匹配成功,也就是 i-dp[i-1] -1 位置正好是左括號,此時 這個左括號再前面乙個的值正好又是有效括號對,那我也應該將這些個括號對加進去

**實現:

public

intmaxlengthkuohao

(string str)

int dp=

newint

[str.

length()

];char

chas = str.

tochararray()

;int maxlength =0;

int pre =0;

for(

int i =

0; i < str.

length()

; i++)}

}return maxlength;

}

總結:

經典的動態規劃,這道題目做完算是分析出,dp陣列代表的含義如何取值的其中一種情況。即當題意中符合要求的情況一定是連續的情況下,那我們dp陣列取值的限制一般都會有 強制性以i位置結尾去規劃通式。

字串 最長有效括號

給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 思路 記錄左右括號的個數 相等了就比較更新答案 如果count2 count1 就結算 從0開始 注意 還要從右向左遍歷!不然會漏掉...

括號字串的最長有效長度

括號字串的最長有效長度 給定乙個括號字串str,返回最長的能夠完全正確匹配括號字元字串的長度。輸入描述 輸出一行字串,代表str 1 l engt hstr 105 str 1 leq length leq 10 5 str 1 leng thst r 1 05 輸出描述 輸出乙個整數,代表括號字串...

有效的括號字串

問題描述 給定乙個只包含三種字元的字串 和 寫乙個函式來檢驗這個字串是否為有效字串。有效字串具有如下規則 任何左括號 必須有相應的右括號 任何右括號 必須有相應的左括號 左括號 必須在對應的右括號之前 可以被視為單個右括號 或單個左括號 或乙個空字串。乙個空字串也被視為有效字串。例 1 輸入 輸出 ...