32. 最长有效括号

简介: 32. 最长有效括号

题目

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

示例 1:

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

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

一、解题思路

看见最长子串问题,我们可以考虑以i位置为结尾,能扩到最远的距离
在这一题中,我们可以使用这种思路
我们用一个pre变量,记录上一个最长有效括号的最左边界的上一个位置,
当i来到某个位置,有2种情况
1)i位置与pre位置不匹配,dp[i]=0;
2)i位置与pre位置匹配,dp[i]=dp[pre-1]+2

二、代码

class Solution {
    public int longestValidParentheses(String s) {
        char[] cha=s.toCharArray();
        int n=cha.length;
        if(s==null||n<2){
            return 0;
        }
        int res=0;
        int[] dp=new int[n];
        for(int i=1;i<n;i++){
            int pre=i-dp[i-1]-1;
            if(pre>=0&&cha[pre]=='('&&cha[i]==')'){
                dp[i]=dp[i-1]+2+((pre>0)?dp[pre-1]:0);
            }
            res = Math.max(res, dp[i]);
        }
        return res;
    }
}

总结

看到最长子串问题我们需要想到以i位置结尾或者开头,分析邻近位置与i的关系,推出动态规划公式

相关文章
|
前端开发 JavaScript 开发者
Web组件:一种新的前端开发范式
【10月更文挑战第9天】Web组件:一种新的前端开发范式
400 2
|
Linux 网络安全 数据安全/隐私保护
Linux系统之Centos7安装cockpit图形管理界面
【10月更文挑战第12天】Linux系统之Centos7安装cockpit图形管理界面
444 1
Linux系统之Centos7安装cockpit图形管理界面
|
人工智能 程序员 开发者
通义灵码测评
通义灵码的出现,给了开发者很多灵感和帮助
319 4
通义灵码测评
能源转换技术
能源转换技术
331 3
|
安全 C#
在阿里云平台注册域名多少钱?域名新注、续费、转入最新收费价格表
在阿里云注册域名多少钱?阿里云可注册的域名后缀多达几百种,域名后缀不同,收费标准不同,通常用户注册比较多的是.com域名、.cn域名、.net域名等,阿里云域名价格表包括域名注册、域名续费及域名转入价格,不同时期的收费价格是不一样的,目前通过阿里云平台注册.com域名最低价格仅需1元,注册.cn域名最低仅需8.8元。下面是小编整理的最新版的阿里云域名新注、续费、转入收费价格表。
3124 0
在阿里云平台注册域名多少钱?域名新注、续费、转入最新收费价格表
|
存储 编解码 分布式计算
简单说一下阿里云OSS在哪些应用场景里应用。
简单说一下阿里云OSS在哪些应用场景里应用。
1217 0
|
IDE 开发工具 git
使用gitee做为仓库管理项目,适合新手,详细有图
使用gitee做为仓库管理项目,适合新手,详细有图
376 0
使用gitee做为仓库管理项目,适合新手,详细有图
|
存储 监控 数据可视化
10 个最佳地理空间数据分析 GIS 软件 上
10 个最佳地理空间数据分析 GIS 软件 上
1018 0
10 个最佳地理空间数据分析 GIS 软件    上
|
JavaScript 前端开发
【ChatGPT】一文教你怎么编写清晰有效的(Prompt)提示词~(二)
【ChatGPT】一文教你怎么编写清晰有效的(Prompt)提示词~(二)
|
传感器 机器学习/深度学习 人工智能
ECCV2022 | 激光雷达点云的开放世界语义分割
三维激光雷达传感器在自主车辆感知系统中发挥着重要作用。近年来,激光雷达点云的语义分割发展非常迅速,受益于包括SemanticKITTI和nuScenes在内的注释良好的数据集。然而,现有的激光雷达语义分割方法都是封闭集和静态的。闭集网络将所有输入视为训练过程中遇到的类别,因此它会错误地将旧类的标签分配给新类,这可能会带来灾难性后果。
ECCV2022 | 激光雷达点云的开放世界语义分割