leetcode:Longest Valid Parentheses 使用动态规划O(n)思路
来源:互联网 发布:maya软件配置要求 编辑:程序博客网 时间:2024/06/04 19:09
Given a string containing just the characters '('
and ')'
, find the length of the longest valid (well-formed) parentheses substring.
For "(()"
, the longest valid parentheses substring is "()"
, which has length = 2.
Another example is ")()())"
, where the longest valid parentheses substring is "()()"
, which has length = 4.
题目分析:要找到最长的括号匹配,首先第一个要考虑的是匹配的括号能否连起来。我们考虑到后面的括号会影响前面的匹配结果,所以想到用从后往前的动态规划。
具体分析如下:如果遇到'(',我们需要跳过后面已经匹配的括号,找到真正要匹配的位置j,如果匹配,则de[i]=dp[i+1]+2;并且如果j+1<len,则之前的和之后的连起来了dp[i]+=dp[j+1];
具体代码如下:
/*使用动态规划的思想,从后往前一步步规划来进行排序 * 遇到左括号,则需要跳过对应的已经匹配的寻找是否匹配 * 如果匹配的话还可以加上匹配)之前匹配的值 * */ public int longestValidParentheses(String s) {int len=s.length();if(len<=1) return 0;int[] dp=new int[len];int max=0;for(int i=len-2;i>=0;i--){char c=s.charAt(i);if(c=='('){int j=i+1+dp[i+1];if(j<len&&s.charAt(j)==')'){dp[i]=dp[i+1]+2;if(j+1<len)dp[i]+=dp[j+1];}}if(dp[i]>max)max=dp[i];}return max; }
0 0
- leetcode:Longest Valid Parentheses 使用动态规划O(n)思路
- leetcode Longest Valid Parentheses O(n)解法
- 【Leetcode 32.Longest Valid Parentheses】动态规划
- LeetCode: Longest Valid Parentheses O(n)时间 O(1)空间
- LeetCode 31. Longest Valid Parentheses O(n)实现
- 【leetcode with java】32 Longest Valid Parentheses O(n)
- LeetCode Longest Valid Parentheses的O(N)解法
- 【栈、动态规划】Longest Valid Parentheses
- 32. Longest Valid Parentheses 动态规划解法
- LeetCode 32 Longest Valid Parentheses 最大合法括号匹配长度计算 动态规划算法有待学习
- LeetCode: Longest Valid Parentheses
- LeetCode Longest Valid Parentheses
- LeetCode: Longest Valid Parentheses
- [Leetcode] Longest Valid Parentheses
- [leetcode]longest Valid Parentheses(!!)
- [Leetcode] Longest Valid Parentheses
- leetcode Longest Valid Parentheses
- 【leetcode】Longest Valid Parentheses
- Threat Intelligence videos
- noip2011 瑞士轮 (归并排序)
- WinHttpOpenRequest第6个参数如何传?LPCWSTR*
- 朴素贝叶斯
- 连接 数据库
- leetcode:Longest Valid Parentheses 使用动态规划O(n)思路
- 线程间通信-示例
- Scala深入浅出进阶经典 第87讲:Scala中使用For表达式做查询
- Eclipse 配置tomcat8
- epoll简介(一)
- string 和strngbuffer间的相互转换
- Scala深入浅出进阶经典 第88讲:Scala中使用For表达式实现map、flatMap、filter
- 排序算法四:交换排序之冒泡排序
- HTTP中的Cookie