zoukankan      html  css  js  c++  java
  • leetcode 最长有效括号

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

    示例 1:

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

    输入: ")()())"
    输出: 4
    解释: 最长有效括号子串为 "()()"

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

    class Solution {
    public:
        //令(为1,)为-1
        //1.括号的匹配情况是一定的,当前缀和小于0的时候说明当前括号没法在前面匹配,直接跳过
        //2.需要正向反向遍历
        int longestValidParentheses(string s) {
            if(s.empty())return 0;
            int res=0;
            for(int i=0,cot=0,start=0;i<s.size();++i){
                if(s[i]=='(')cot++;
                else{
                    cot--;
                    if(cot==0){
                        res=max(res,i-start+1);
                    }
                    else if(cot<0){
                        start=i+1;
                        cot=0;
                    }
                }
            }
            for(int i=s.size()-1,cot=0,start=s.size()-1;i>=0;--i){
                if(s[i]==')')cot++;
                else{
                    cot--;
                    if(cot==0){
                        res=max(res,start-i+1);
                    }
                    else if(cot<0){
                        start=i-1;
                        cot=0;
                    }
                }
            }
            return res;
        }
    };
    
  • 相关阅读:
    JDK安装与配置
    MAVEN安装与配置
    http协议与soap协议之间的区别
    Zookeeper
    TCP/IP及http协议 SOAP REST
    Java数据结构总述
    SQL基础
    IntelliJ IDEA 快捷键
    反射机制
    java集合的作用
  • 原文地址:https://www.cnblogs.com/clear-love/p/11381646.html
Copyright © 2011-2022 走看看