32. Longest Valid Parentheses,
题意: 找出一个只包含”(“和”)”的字符串中最长的有效子字符串的长度。有效的意思是指该子字符串中的括号都能正确匹配
思路:动态规划,dp[i]表示以s[i]结尾的字符串所能组成的合规的子字符串的最大长度显然,对于s[i]是左括号而言,dp[i]=0, 如果s[i]是右括号,j := index - 1 - dp[index-1] 计算出了以s[i-1]结尾的子字符串的起始的前一个位置,如果s[j]是左括号且j>=0, 说明dp[i] = dp[i-1]+2, 即加上了j和i这两个位置的字符,此时还需要考虑dp[j-1], 如果j-1>0,则dp[i]的最终结果还要加上dp[j-1],因为dp[j-1]可能也大于0
Python:
1 | class Solution(object): |
Go:
1 | func longestValidParentheses(s string) int { |