32. Longest Valid Parentheses
来源:互联网 发布:淘宝保证金计划打不开 编辑:程序博客网 时间:2024/06/05 00:09
1、题目描述
给出一个只含有(和)的字符串,返回最长的括号匹配合法的子串。
2、思路
动态规划。
dp[i] 指的是以位置i结尾的最长合法子串的长度。
初始化:dp[i]=0
状态转移:只有s[i]==),dp[i]才有可能大于0.
1)s[i-1]==(,dp[i] = dp[i-2]+2;
2)s[i-1]==),s[i-dp[i-1]-1]==(
dp[i] = dp[i-1]+2;
if i-dp[i-1]-2 >=0
dp[i] += dp[i-dp[i-1]-2];
返回最长的dp[i]。
复杂度O(n)
3、代码
int longestValidParentheses(string s) { int l = s.size(); if(l==0) return 0; int ans = 0; int dp[l] = {0}; for(int i=1;i<l;i++){ if(s[i]==')'){ if(s[i-1]=='('){ if(i==1) dp[i]=2; else dp[i]=dp[i-2]+2; } else{ if(s[i-dp[i-1]-1]=='('){ dp[i]=dp[i-1]+2; if(i-dp[i-1]-2>=0) dp[i]+=dp[i-dp[i-1]-2]; } } if(dp[i]>ans) ans=dp[i]; } } return ans; }
阅读全文
0 0
- 32.Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- 32. Longest Valid Parentheses
- Mysql字符串的处理函数
- [BZOJ]3738: [Ontak2013]Kapitał 扩展lucas
- Hadoop搭建过程中实现master与slave无密码登录
- CMake错误No CMAKE_CXX_COMPILER could be found.
- PCB中电流如何流动——差分电流如何流动
- 32. Longest Valid Parentheses
- 400. Nth Digit
- [转]HUSTOJ建立分布式判题系统
- ruby普通二分查找和递归二分查找
- ObjectMapper JSON的 处理
- lintcode&九章算法——Lintcode No.77. 最长公共子序列 ? 待解决
- Intellij IDEA SpringBoot热部署 使用Spring-boot-devTools无效解决办法
- 判断是否是素数
- 编写高效的C++程序