跳到主要内容

32.最长有效括号

链接:32.最长有效括号
难度:Hard
标签:栈、字符串、动态规划
简介:给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。

题解 1 - typescript

  • 编辑时间:2021-11-06
  • 执行用时:84ms
  • 内存消耗:40.7MB
  • 编程语言:typescript
  • 解法介绍:动态规划分析括号出现的状态。
function longestValidParentheses(s: string): number {
const n = s.length;
const dp = new Array(n + 1).fill(0);
let ans = 0;
for (let i = 1; i < n; i++) {
const ch = s[i];
if (ch === '(') dp[i + 1] = 0;
else if (s[i - 1] === '(') dp[i + 1] = dp[i - 1] + 2;
else if (s[i - dp[i] - 1] === '(') dp[i + 1] = dp[i] + 2 + dp[i - dp[i] - 1];
else dp[i + 1] = 0;
ans = Math.max(ans, dp[i + 1]);
}
return ans;
}