• LeetCode——最长有效括号


    Q:给出一个仅包含字符'('和')'的字符串,计算最长的格式正确的括号子串的长度。对于字符串"(()"来说,最长的格式正确的子串是"()",长度为2.再举一个例子:对于字符串")()())",来说,最长的格式正确的子串是"()()",长度为4.

    A:所有错误的位置取出来,然后算中间正确的长度。

    public static int longestValidParentheses(String s) {
            if (s.length() == 0)
                return 0;
            char[] c = s.toCharArray();
            Stack<Integer> stack = new Stack<>();
            for (int i = 0; i < c.length; i++) {
                if (c[i] == '(') {
                    stack.push(i);
                } else {
                    if (stack.empty()) {
                        stack.push(i);
                    } else {
                        if (c[stack.peek()] == '(') {
                            stack.pop();
                        } else {
                            stack.push(i);
                        }
                    }
                }
            }
            //为了减少判断,在前面和后面放一个头一个尾
            int[] arr = new int[stack.size() + 2];
            arr[0] = -1;
            arr[arr.length - 1] = c.length;
            for (int i = arr.length - 2; i > 0; i--) {
                arr[i] = stack.pop();
            }
            int max = 0;
            for (int i = 1; i < arr.length; i++) {
                max = Math.max(max, arr[i] - arr[i - 1] - 1);
            }
            return max;
        }
    
  • 相关阅读:
    如何找回Oracle所有用户丢失的密码
    数据库范式详解
    lua
    cdn
    初心
    广州
    vim 命令
    git 命令
    Linux琐碎
    汪国真语录
  • 原文地址:https://www.cnblogs.com/xym4869/p/12636641.html
Copyright © 2020-2023  润新知