最长有效括号(hard)

题目描述

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

题目来源

https://leetcode-cn.com/problems/longest-valid-parentheses/

题目实例

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

解题代码

/**
 * @param {string} s
 * @return {number}
 */
var longestValidParentheses = function(s) {
    var op_stack = [];
    var tmp_result = 0;
    var len = s.length;
    s = s + '#';
    var dp = [];
    for(let j = 0;j <= len;j++){
        if(s[j] == '('){
            op_stack.push(s[j]);
            dp.push(tmp_result);
        }else if(s[j] == ')'){
            let op = op_stack.pop();
            if(op == '('){
                tmp_result+=2;
                dp.pop();
            }else{
                dp.push(tmp_result);
            }
        }else if(s[j] == '#'){
            dp.push(tmp_result);
        }
    }
    var result = tmp = dp[0];
    for(let n = 1;n < dp.length;n++){
        tmp = dp[n]-dp[n-1];
        if(tmp > result){
            result = tmp;
        }
    }
    return result;
};

 

上一篇:git常用命令


下一篇:[LeetCode] 37. Sudoku Solver_Hard tag: BackTracking