19.2.1 [LeetCode 32] Longest Valid Parentheses

Given a string containing just the characters ‘(‘ and ‘)‘, find the length of the longest valid (well-formed) parentheses substring.

Example 1:

Input: "(()"
Output: 2
Explanation: The longest valid parentheses substring is "()"

Example 2:

Input: ")()())"
Output: 4
Explanation: The longest valid parentheses substring is "()()"

题意

找最长的合法左右括号字符串

题解

这道题还蛮难的,一开始我的dp思路错误了(n3的复杂度真是不像话)

把dp数组设为以当前索引值为末尾的合法字符串的长度就可以做了

 1 class Solution {
 2 public:
 3     int longestValidParentheses(string s) {
 4         int l = s.length();
 5         if (l < 2)return 0;
 6         int ans = 0;
 7         vector<int>dp;
 8         dp.resize(l);
 9         for (int i = 0; i < l; i++)
10             dp[i] = 0;
11         if (s[0] == ‘(‘&&s[1] == ‘)‘) {
12             ans = 2;
13             dp[1] = 2;
14         }
15         for (int i = 2; i < l; i++) {
16             if (s[i] == ‘(‘)continue;
17             if (s[i - 1] == ‘(‘)dp[i] = dp[i - 2] + 2;
18             else {
19                 int last = dp[i - 1];
20                 if (i - last - 1 >= 0 && s[i - last - 1] == ‘(‘) {
21                     dp[i] = last + 2;
22                     if (i - last - 2 >= 0)
23                         dp[i] += dp[i - last - 2];
24                 }
25             }
26             ans = max(ans, dp[i]);
27         }
28         return ans;
29     }
30 };

原文地址:https://www.cnblogs.com/yalphait/p/10346751.html

时间: 2024-10-10 16:19:48

19.2.1 [LeetCode 32] Longest Valid Parentheses的相关文章

LeetCode - 32. Longest Valid Parentheses

32. Longest Valid Parentheses Problem's Link ---------------------------------------------------------------------------- Mean: 给定一个由'('和')'组成的字符串,求最长连续匹配子串长度. analyse: 定义一个stack<pair<char,int>>类型的stack. 遇到'('进栈; 遇到')'需要分两种情况讨论: 栈顶元素为'(',正好匹配,

[leetcode]32. Longest Valid Parentheses最长合法括号子串

Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring. Example 1: Input: "(()" Output: 2 Explanation: The longest valid parentheses substring is "()" Example

Java [leetcode 32]Longest Valid Parentheses

题目描述: Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring. For "(()", the longest valid parentheses substring is "()", which has length = 2. Another exampl

LeetCode 32 Longest Valid Parentheses(最长有效括号)(*)

翻译 给定一个仅仅包含"("或")"的字符串,找到其中最长有效括号子集的长度. 对于"(()",它的最长有效括号子集是"()",长度为2. 另一个例子")()())",它的最长有效括号子集是"()()",其长度是4. 原文 Given a string containing just the characters '(' and ')', find the length of the l

leetCode 32.Longest Valid Parentheses (有效的最大括号) 解题思路和方法

Longest Valid Parentheses Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring. For "(()", the longest valid parentheses substring is "()", which has length

LeetCode 32 Longest Valid Parentheses (C,C++,Java,Python)

Problem: Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring. For "(()", the longest valid parentheses substring is "()", which has length = 2. Another exa

[LeetCode] 32. Longest Valid Parentheses 最长有效括号

Given a string containing just the characters '(' and ')', find the length of the longest valid (well-formed) parentheses substring. For "(()", the longest valid parentheses substring is "()", which has length = 2. Another example is &

leetcode 之 Longest Valid Parentheses

leetcode中和括号匹配相关的问题共有三个,分别是: Valid Parentheses Given a string containing just the characters '(', ')', '{', '}', '[' and ']', determine if the input string is valid. The brackets must close in the correct order, "()" and "()[]{}" are a

[LeetCode] 032. Longest Valid Parentheses (Hard) (C++)

指数:[LeetCode] Leetcode 指标解释 (C++/Java/Python/Sql) Github: https://github.com/illuz/leetcode 032. Longest Valid Parentheses (Hard) 链接: 题目:https://oj.leetcode.com/problems/longest-valid-parentheses/ 代码(github):https://github.com/illuz/leetcode 题意: 问一个字