Typescript-Algorithms
    Preparing search index...

    Variable longest_valid_parenthesesConst

    longest_valid_parentheses: (s: string) => number = longestValidParentheses

    32.最长有效括号

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


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


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


    输入: s = ""
    输出: 0


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

    Type declaration

      • (s: string): number
      • Parameters

        • s: string

        Returns number

    1. 使用栈来记录括号的位置,遇到「(」入栈,遇到「)」出栈。
    2. 如果栈为空,则将当前位置入栈。
    3. 如果栈不为空,则计算当前位置与栈顶位置的差值,更新最大长度。
    4. 如果栈为空,则将当前位置入栈。
    5. 如果栈不为空,则计算当前位置与栈顶位置的差值,更新最大长度。
    6. 如果栈为空,则将当前位置入栈。
    function longestValidParentheses(s: string): number {
    let ans = 0;
    const stack: number[] = [];

    for (let i = 0; i < s.length; i++) {
    if (s.charAt(i) === '(') {
    stack.push(i);
    }
    else {
    if (stack.length > 0 && s.charAt(stack[stack.length - 1]) === '(') {
    stack.pop();
    if (stack.length > 0) {
    ans = Math.max(ans, i - stack[stack.length - 1]);
    }
    else {
    ans = Math.max(ans, i + 1);
    }
    }
    else {
    stack.push(i);
    }
    }
    }

    return ans;
    };