leedcode32:
給定乙個只包含'('
和')'
的字串,找出最長的包含有效括號的子串的長度。
示例 1:
輸入:"(()"輸出:2解釋:最長有效括號子串為 "()"示例 2:
輸入:")()())"輸出:4解釋:最長有效括號子串為 "()()"思路:
首先生成乙個長度和s一樣的陣列dp,dp[i]表示以i結尾的字元的最長有效括號子串長度。顯然dp[0]=0;假設遍歷到s[i],如果s[i]=』(』,dp[i]必然為0,如果s[i]=』)』,可能存在以s[i]結尾的最長有效括號,dp[i-1]是以s[i-1]結尾的最長有效長度, 因此應該判斷i-dp[i-1]-1位置上的字元是否為』(』,如果是,則dp[i]=dp[i-1]+2;還要考慮另外一種情況,以(i-dp[i-1]-1)-1結尾字元的的有效長度,所以dp[i]=dp[i-1]+2+dp[(i-dp[i-1]-1)-1]。
class solution
maxlen=max(maxlen,dp[i]);
}return maxlen;
}};
最長有效括號
給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 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 ...
最長有效括號
給定乙個只包含 和 的字串,找出最長的包含有效括號的子串的長度。示例 1 輸入 輸出 2 解釋 最長有效括號子串為 示例 2 輸入 輸出 4 解釋 最長有效括號子串為 class solution def longestvalidparentheses self,s str int def test...