• LeetCode No32. 最长有效括号


    题目

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

    示例 1:

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

    示例 2:

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

    示例 3:

    输入:s = ""
    输出:0

    提示:

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

    思路

    字符里面只含有"(" 或者 ")",其实就是一个括号匹配问题,把左括号的下标存起来,然后遍历数组,遇到不匹配的情况,就拿出来,用当前下标减去当前栈顶的下标,得出的值就是有效括号的长度。

    AC代码

    点击查看代码
    class Solution {
        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.isEmpty()) {
                        stack.push(i);
                    } else {
                        maxans = Math.max(maxans, i - stack.peek());
                    }
                }
            }
            return maxans;
        }
    }
    
  • 相关阅读:
    JavaEE高级-JPA学习笔记
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
    jQueryrocket
  • 原文地址:https://www.cnblogs.com/Asimple/p/16226279.html
Copyright © 2020-2023  润新知