给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。

示例 1:

输入:s = "(()"
输出:2
解释:最长有效括号子串是 "()"
示例 2:

输入:s = ")()())"
输出:4
解释:最长有效括号子串是 "()()"
示例 3:

输入:s = ""
输出:0

提示:

0 <= s.length <= 3 * 104
s[i] 为 '(' 或 ')'

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-valid-parentheses
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题报告:

一题多解问题。

解法一是DP,比较好想,思路也很清晰,就是写起来有点丑陋。dp[i]代表以i为结尾的最长序列长度。

解法二可以用栈,合并的思路和OAE思想的结合。

AC代码1:(dp的思路)

class Solution {
public:int dp[55555];int longestValidParentheses(string s) {int n = s.size();if(s[1] == ')' && s[0] == '(') dp[1] = 2;for(int i = 2; i<n; i++) {if(s[i] == ')') {if(s[i-1] == ')') {if(i-1-dp[i-1]>=0 && s[i-1-dp[i-1]] == '(')dp[i] = dp[i-1]+2 + ((i-1-dp[i-1]-1>=0)?dp[i-1-dp[i-1]-1]:0);else dp[i] = 0;    } else dp[i] = dp[i-2] + 2;}}int ans = 0;for(int i = 0; i<n; i++) ans = max(ans, dp[i]);return ans;}
};

AC代码2:(栈)

参考wjh巨佬的博客

【LeetCode - 32】最长有效括号___似水流年__的博客-CSDN博客

【LeetCode - 32】最长有效括号相关推荐

  1. Leetcode 32 最长合法括号子序列

    算法特辑–动态规划 Leetcode 32 最长合法括号子序列 给定只有"(" 和 ")" 的字符串,求出最长的合法括号子序列. 例如:"())&qu ...

  2. leetcode:32. 最长有效括号

    32. 最长有效括号 来源:力扣(LeetCode) 链接: https://leetcode.cn/problems/longest-valid-parentheses/ 给你一个只包含 '(' 和 ...

  3. LeetCode 32. 最长有效括号(栈DP)

    文章目录 1. 题目信息 2. 栈 解题 3. 动态规划 解题 1. 题目信息 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度. 示例 1:输入: "(() ...

  4. LeetCode 32最长有效括号(困难)

    维护不易,还请点个赞赞,如果想加入还请关注公众号bigsai回复进群加入打卡. 题目描述 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度. 示例 1: 输入: &qu ...

  5. Leetcode 32.最长有效括号

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

  6. leetcode 32. 最长有效括号

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

  7. LeetCode 32 最长有效括号

    https://leetcode-cn.com/problems/longest-valid-parentheses/ 解决方案 class Solution {public int longestV ...

  8. 32. 最长有效括号

    32. 最长有效括号 题目描述 给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度. 示例1: 输入:s = "(()" 输出:2 解释:最 ...

  9. 【LeetCode笔记】32. 最长有效括号(Java、动态规划、栈、字符串)

    文章目录 题目描述 代码 & 解析 1. 栈做法 2. 动态规划 题目描述 (括号题真的好烦人) 讲道理,题目一看,大概率就是用dp做 代码 & 解析 1. 栈做法 这个做法我没实际写 ...

  10. [力扣]32. 最长有效括号(三解法)

    解法一:栈 class Solution:def longestValidParentheses(self, s: str) -> int:q = []st = -1res = 0for i i ...

最新文章

  1. 林园投资体系+嘴巴经济+病从口入+老龄化
  2. Jquery Table 的基本操作
  3. 蔡先生论道大数据十九:王羲之与大数据
  4. C# ToString()方法
  5. 百度高德位置定位服务器,调用百度、高德地图App,百度地图网页版,App定位
  6. webGL简单例子(klayge)
  7. 为了保护眼睛,请调节颜色
  8. mybatis-嵌套(关联)查询/ N+1 / 延迟加载
  9. mysql索引学习笔记
  10. 测绘专业学生对测绘软件的一点认识
  11. 微信下载录音文件(音轨分离 ffmpeg视频合成)
  12. 【滑动窗口协议模拟】
  13. win10计算器rsh_Win10计算器快捷键
  14. 串口发送字符控制灯亮灭
  15. 超级计算机 计算化学,计算化学软件使用经验-超算中心.PDF
  16. 解决:未定义标识符 “sleep“ 或 “sleep“:找不到标识符
  17. 离散数学 —— 集合论(集合的传递性与自反性、幂集、交集、并集、相对补集、绝对补集、对称差或异或、序偶或序对、集合的规模或基数)
  18. Controller层使用@value注解获取不到 yml文件中的properties属性值
  19. 百度网盘漏洞,2019年不限速方法,一直享受高速加速下载!
  20. 技术总结-从输入 URL 到页面加载完成的过程中都发生了什么事情?

热门文章

  1. 基于FlashPaper的文档播放器
  2. 212. Word Search II:多个单词查找
  3. 大学python笔记_Python 上手笔记
  4. mysql操作窗口如何设置粘贴,Access6.5在表中复制和粘贴数据
  5. D - F e n d 簡 單 教 學 DOSBOX Easy Shell 【玩DOS游戏的必备软件】
  6. 文档上传到服务器上,将文件上传到服务器上
  7. csp真题 202109-2非零段划分C++代码(100分)
  8. mac删除android sd卡,如何从mac完全删除android及其所有文件?
  9. RT-Thread Nano版本和RT-Thread Master版本的关系
  10. Spring MVC使用指示符重定向