最长有效括号

给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。

示例 1:

输入: "(()"

输出: 2

解释: 最长有效括号子串为 "()"

示例 2:

输入: ")()())"

输出: 4

解释: 最长有效括号子串为 "()()"

设置两个指针,一个表示左括号open的个数 ,另一个表示右括号close的个数。

方法:两次遍历操作,第一次从前往后遍历,第二次从后向前遍历。 因此时间复杂度为O(n)

1.从左向右扫描,当遇到左括号时,open++,当遇到右括号时,close++

如果open==close,那么需要对最长长度max进行更新操作  max = Math.max(max , 2*open)

如果 close > open ,说明右括号个数大于左括号个数,已经不满足合法性,则重新设置open=0, close=0

2.从右向左扫描,当遇到右括号时close++,当遇到左括号时,open++

如果close==open,那么更新max即 max = Math.max(max , 2*close)

如果open>close ,说明右括号个数大于左括号个数,已经不满足合法性,则重新设置open=0 ,close =0

 1 class Solution {
 2     public int longestValidParentheses(String s) {
 3         int right=0,left=0,ans=0;
 4         int len=s.length();
 5         for(int i=0;i<len;i++){
 6             if(s.charAt(i)=='(')
 7                 left++;
 8             else
 9                 right++;
10             if(left==right){
11                 ans=Math.max(ans,2*right);
12             }else if(right>left)
13                 left=right=0;
14         }
15         left=right=0;
16         for(int i=len-1;i>=0;i--){
17             if(s.charAt(i)==')')
18                 right++;
19             else
20                 left++;
21             if(right==left)
22                 ans=Math.max(ans,2*left);
23             else if(left>right)
24                 left=right=0;
25         }
26         return ans;
27     }
28 }

转载于:https://www.cnblogs.com/kexinxin/p/10163001.html

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 最长有效括号

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

  7. 32. 最长有效括号

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

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

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

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

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

最新文章

  1. springBoot 搭建web项目(前后端分离,附项目源代码地址)
  2. 2020 年技术趋势一览:AutoML、联邦学习、云寡头时代的终结
  3. CodeForces - 707C
  4. ffmpeg之常用命令的学习
  5. 深入浅出JS:Two
  6. 人工智能产业链深度透析—基础层
  7. CSU 1803 2016(数论)
  8. 现实给了梦想多少时间?
  9. [Regionals 2012 :: Asia - Tokyo ]
  10. 多看系统下载_制冷系统压力检测有多重要?看了你就知道了
  11. tomcat/redis/dubbo/netty
  12. VMware workstations pro16.23已经安装vmware tool,Ubuntu仍然无法复制粘贴
  13. jtopo连线绘制脉冲动画效果
  14. 服务器桌面假死怎么处理,win10桌面假死如何解决
  15. 分辨率单位及换算,LW / PH、LP / mm、L / mm、Cycles / mm、Cycles / pixel、LP / PH
  16. 社区志愿者招募管理系统
  17. Python如何自动操作电脑桌面应用程序
  18. PCI Express学习篇---Power Management(二)
  19. 弹簧质量阻尼器的动力学
  20. 招商银行西安分行暑期实习生应聘流程

热门文章

  1. python线程同步
  2. ubuntu 安装nginx 并开启目录浏览功能
  3. 4.Unix工作环境
  4. JavaScript学习(二十二)—动态创建表格
  5. CCF CSP202112-1 序列查询
  6. 为什么我的U盘传到一半速度会变成0然后过一会儿才回继续
  7. 父母有退休工资和没有退休工资的比较,家庭生活区别大吗?
  8. 买房后每月还贷是什么感觉?
  9. “很多人,到了一定年龄才明白:不要与任何人走的太近”你怎么看?
  10. 2000年一元钱牡丹图案现在值钱吗?