问题描述

* 找出字符串中最长的有效子串,字符串只包括'(' , ')'。何为有效,可参考leetcode20 判断一个字符串是否为有效字符串。

解题思路

介绍动态规划的解法

  1. 从倒数第二个元素往前遍历,特别针对 " ( ) " 的情况。
  2. 用一维数组保存结果,d[i] 代表从当前下标 i 到字符串 s 最末尾的子串中的最长有效子串的长度。
  3. 动态方程如何写呢?
  4. 对于当前下标i,如果是 ' ( ',则考虑右边子串中的元素,是否为 ' )'。考虑哪一个呢? symi 变量是怎么想到的呢?后来我思考发现,发现原作设置的 symi 变量确实巧妙。symi 代表对于当前下标i,需要进行匹配的右括号的位置。此时若是匹配,则得到的 d[i] 代表从 i 到 symi 之间的子串的最长有效子串长度,如果下标 symi 右边还有元素。则需要加上 d[symi+1]。
  5.  1 public class Solution {
     2     public int longestValidParentheses(String s) {
     3         if(null == s) return 0;
     4         int len = s.length(), max = 0;
     5         int[] d = new int[len];
     6         for (int i = len-2; i >= 0; i--){
     7             int symi = i+1+d[i+1];
     8             if ('(' == s.charAt(i) && symi < len && ')' == s.charAt(symi)){
     9                 // 如果满足条件,则相当于在d[i+1]的基础上又多了一对"()",所以长度+2
    10                 d[i] = d[i+1]+2;
    11                 // 如果symi右边还有元素,那么d[i]就应该加上d[symi+1]
    12                 if(symi+1 < len){
    13                     d[i] += d[symi+1];
    14                 }
    15             }
    16             max = Math.max(max, d[i]);
    17         }
    18         return max;
    19     }
    20 }

转载于:https://www.cnblogs.com/dogeLife/p/11000444.html

leetcode32 Longest Valid Parentheses相关推荐

  1. LeetCode Longest Valid Parentheses

    原题链接在这里:https://leetcode.com/problems/longest-valid-parentheses/ 题目: Given a string containing just ...

  2. LeetCode 32. Longest Valid Parentheses

    问题链接 LeetCode 32. Longest Valid Parentheses 题目解析 给出只包含左右括号的字符串,返回最长的括号匹配字符串长度. 解题思路 括号匹配问题一般借助 栈,便于理 ...

  3. LeetCode算法入门- Longest Valid Parentheses -day12

    LeetCode算法入门- Longest Valid Parentheses -day12 Given a string containing just the characters '(' and ...

  4. 最长有效括号子串长度 c语言,LeetCode: Longest Valid Parentheses (求最长有效匹配括号子串的长度)...

    题目描述: Given a string containing just the characters'(' and')', find the length of the longest valid ...

  5. Longest Valid Parentheses leetcode java

    题目: Given a string containing just the characters '(' and ')', find the length of the longest valid ...

  6. Leetcode: Longest Valid Parentheses

    Question Given a string containing just the characters '(' and ')', find the length of the longest v ...

  7. 32. Longest Valid Parentheses

    一.题目 1.审题 2.分析: 一个只包含'('.')'的字符串,求其中正确闭合的子串的最大长度. 二.解答 1.思路: 方法一: 从第一个字符开始遍历,依次求出从遍历的字符开始的最长闭合的字符串长度 ...

  8. 32. Longest Valid Parentheses 最长有效括号

    Title 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度. 示例 1: 输入: "(()" 输出: 2 解释: 最长有效括号子串为 " ...

  9. [Leetcode] Longest Valid Parentheses

    找出字串裡最長的合法括號組 簡單說,一樣stack搜尋合法parenth,把不合法的 ( & ) index 紀錄下來,最後算index間的差值取最大就是最長的 public class So ...

最新文章

  1. 带头结点的线性表的链式实现
  2. 如何看待2016年安防市场?
  3. Tomcat 下载安装、配置、启动、报错问题
  4. python获取文件夹下文件_Python获取目录下的所有文件
  5. 用javascript实现自动隐藏页面字段
  6. Educational Codeforces Round 81 (Rated for Div. 2) C. Obtain The String 序列自动机
  7. 【模式识别】K均值聚类算法应用实验报告及MATLAB仿真
  8. GIS集成技术之二:数据集成
  9. 亚马逊 ai 解雇_解雇社区成员
  10. 兰州职称计算机中心,【兰州2013年职称计算机考试报名通知】- 环球网校
  11. 连接SQL Server数据库
  12. mysql升序nuul在最后,javaweb连接数据库并完成增删改查
  13. centos上自动执行脚本执行php文件
  14. 技术狂何波:战斗在程序化交易第一线
  15. Android电量优化全解析
  16. java gui界面设计,2022最新
  17. MAXScript入门
  18. 【晶体管电路设计】四、共基极放大电路设计
  19. 专访SOSO街景地图:寻找工具性产品突破的机遇
  20. 苹果手机无法验证应用怎么办_App Store 提示“需要验证”无法下载应用怎么办?...

热门文章

  1. MyBatis是持久化层框架(SQL映射框架)-操作数据库
  2. Java的知识点31——线程同步
  3. Python 技术篇-whl库安装失败经验总结
  4. 微信小程序云开发 | 云函数安装依赖
  5. freeRtos学习笔(4)消息队列
  6. 第三课--EFM32GG11系列--串口接收不定长度数据的几种方式
  7. 关于matlab中pcolor显示图片时的shading设置问题
  8. crossvalind函数 (交叉验证函数)
  9. 下载股票代码的历史数据并打包成csv
  10. Python代码:数字图像处理(DIP)7.1.2子带编码example7.2