LeetCode Longest Valid Parentheses
2015-01-28 20:02
316 查看
dp[i]表示以第i个字符为结尾的最长合法串,首先如果这个字符是左括号,那么有dp[i]=0,
否则计算dp[i]可能需要dp[i-1]的值,就是dp[i-1]表示以第i-1个字符为结尾的最长合法串,那么在这个串之前如果刚好是了‘(’那么有dp[i]=dp[i-1]+2 ,当然这个字符可能已经越界并不存在。关键是这样还不够,假如第i-1-dp[i-1]-1个字符存在,dp[i]那么还得加上它的dp值,因为这段可以和计算的dp[i]接起来形成更长的长度,可能说的不是很清楚,代码如下:
int dp[50001]; class Solution { public: int longestValidParentheses(string s) { int l=s.size(); memset(dp,0,sizeof(dp)); int i; int ans=0; for(i=1;i<l;i++) { if(s[i]==')') { if(i-1-dp[i-1]>=0) { if(s[i-1-dp[i-1]]=='(') { dp[i]=dp[i-1]+2; if(i-1-dp[i-1]>0) dp[i]+=dp[i-2-dp[i-1]]; } } } if(ans<dp[i]) ans=dp[i]; } return ans; } };
最后的结果就是max(dp[i]),dp真的是一个好神奇的东西!
相关文章推荐
- [LeetCode]032-Longest Valid Parentheses
- LeetCode32 Longest Valid Parentheses
- [leetcode]Longest Valid Parentheses
- LeetCode Longest Valid Parentheses
- leetcode笔记:32.Longest Valid Parentheses
- leetcode - Longest Valid Parentheses
- LeetCode_32---Longest Valid Parentheses
- [leetcode]Longest Valid Parentheses @ Python
- 【leetcode】String——Longest Valid Parentheses(32)
- LeetCode 121 Longest Valid Parentheses
- LeetCode: Longest Valid Parentheses
- [Leetcode] Longest Valid Parentheses
- Longest Valid Parentheses -- leetcode
- LeetCode题解:Longest Valid Parentheses
- Leetcode 32. Longest Valid Parentheses
- Leetcode Longest Valid Parentheses
- leetcode-32 Longest Valid Parentheses
- [LeetCode] Longest Valid Parentheses
- leetcode: Longest Valid Parentheses
- 【LeetCode】最长括号匹配Longest Valid Parentheses