Longest Valid Parentheses
来源:互联网 发布:如何系统自学java 编辑:程序博客网 时间:2024/05/04 01:05
DP题,过程如下:计算出以每一个元素结尾所能形成的最长合法括号子串,其中最大值即为所求。时间复杂度,空间复杂度都是O(n)。
记当前位置下标为 i :
1,若 i 位置为 ' ( ' ,则dp[i] = 0;
2,若 i 位置为 ' ) ' :
判断位置 i-dp[i-1]-1 是否为 ' ( ':
若不是: dp[i] = 0;
若是:dp[i] = dp[i-1] + 2 + dp[i-dp[i-1]-2];当然需要控制边界。
class Solution {public: int dp[100000]; int longestValidParentheses(string s) { // Start typing your C/C++ solution below // DO NOT write int main() functionif(s.size() == 0) return 0;dp[0] = 0; int maxLen = 0;for(int i = 1; i < s.size(); i ++){if(s[i] == '(') dp[i] = 0;else{if(i-dp[i-1] >= 1 && s[i-dp[i-1]-1] == '(') {dp[i] = dp[i-1] + 2; if(i - dp[i-1] >= 2) dp[i] += dp[i-dp[i-1]-2]; }else dp[i] = 0;} if(dp[i] > maxLen) maxLen = dp[i];} return maxLen; }};
- LeetCode: Longest Valid Parentheses
- LeetCode Longest Valid Parentheses
- LeetCode: Longest Valid Parentheses
- [Leetcode] Longest Valid Parentheses
- [leetcode]longest Valid Parentheses(!!)
- Longest Valid Parentheses
- Longest Valid Parentheses
- [Leetcode] Longest Valid Parentheses
- leetcode Longest Valid Parentheses
- LeetCode31:Longest Valid Parentheses
- longest valid parentheses
- Longest Valid Parentheses
- 【leetcode】Longest Valid Parentheses
- Longest Valid Parentheses
- [LeetCode]Longest Valid Parentheses
- Longest Valid Parentheses
- Longest Valid Parentheses
- Longest Valid Parentheses
- Qt helloworld
- 杭电acm oj 1285 确定比赛名次
- jsp3s倒计时页面跳转(页面动态显示3.2.1.0)
- Asterisk学习笔记之 -- AMI篇
- 软件
- Longest Valid Parentheses
- TextBox判断是否为数字
- 暑期实习21之android简单应用开发
- jQuery基本原理(2)
- shell脚本中顺序执行另几条shell命令
- 在winform程序里打开网页,并控制页面大小和任务栏
- 新游戏 老规则
- android ListView 中点击事件与其他控件点击时间冲突问题与自动滚动
- 字符串格式参数的日期比较函数