美文网首页
最长有效括号

最长有效括号

作者: 桑榆非晚95 | 来源:发表于2021-02-26 11:10 被阅读0次

//给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。
//输入:s = ")()())"
//输出:4
//解释:最长有效括号子串是 "()()"

public int longestValidParentheses(String s) {
        int maxans = 0;
        Deque<Integer> stack = new LinkedList<Integer>();
        stack.push(-1);
        for (int i = 0; i < s.length(); i++) {
            if (s.charAt(i) == '(') {
                stack.push(i);
            } else {
                stack.pop();
                if (stack.empty()) {
                    stack.push(i);
                } else {
                    maxans = Math.max(maxans, i - stack.peek());
                }
            }
        }
        return maxans;
    }

动态规划

public int longestValidParentheses(String s) {
        if(s==null || s.length()<=1){
            return 0;
        }
        char[] chars = s.toCharArray();
        int [] dp=new int[chars.length];
        dp[0]=0;
        int max=Integer.MIN_VALUE;
        for (int i = 1; i < chars.length; i++) {
            if(chars[i]=='('){
                dp[i]=0;
            }else{
                if(chars[i-1]=='('){
                    if(i-2>=0){
                        dp[i]=dp[i-2]+2;
                    }else{
                        dp[i]=2;
                    }

                }else{
                    if(i-dp[i-1]-1>=0&&chars[i-dp[i-1]-1]=='('){
                        dp[i]=dp[i-1]+2;
                        if(i-dp[i-1]-2>=0){
                            dp[i]=dp[i]+dp[i-dp[i-1]-2];
                        }
                    }
                }
            }
            max=Math.max(max,dp[i]);
        }
        return max;
    }

相关文章

  • 最长有效括号

    题目来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/long...

  • 最长有效括号

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

  • 最长有效括号

    难点在于()()如何匹配前面的连续(),还有(())如何处理 举例:s[i-2]==")" ()([)]=>dp[...

  • 最长有效括号

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

  • LeetCode-32-最长有效括号

    LeetCode-32-最长有效括号 题目 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的...

  • LeeCode刷题笔记4:最长有效括号

    @[TOC](最长有效括号) 题目描述 给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串...

  • 32. 最长有效括号

    32. 最长有效括号 视频讲解挺好的

  • leetcode 32 最长有效括号

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

  • 最长的有效括号

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

  • 栈--最长有效括号

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

网友评论

      本文标题:最长有效括号

      本文链接:https://www.haomeiwen.com/subject/hgmpfltx.html