[动态规划] 最长有效括号

Posted 热爱生活的小熊猫

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[动态规划] 最长有效括号相关的知识,希望对你有一定的参考价值。

 动态规划系列专题   LeetCode32

在之前我们也推送过很多动态规划系列的题目,但由于动态规划作为算法界的扛把子真的很难,因此我们今后会陆续推送多期动态规划专题题目,挑选的题目大都属于中等偏上难度(也会有部分有代表性的较为简单的题目)。希望通过整理这类难题,能和大家一起将动态规划这块硬骨头啃下来!


1 题目描述

给定一个只包含 '('')' 的字符串,找出最长的包含有效括号的子串的长度。

示例:

输入: "(()"
输出: 2
解释: 最长有效括号子串为 "()"

输入: ")()())"
输出: 4
解释: 最长有效括号子串为 "()()"

2 题解

2.1 暴力扫描

可以使用计数法判断区间 的子串是否为有效括号,因此使用双重循环即可解决这个问题。

class Solution {
public:
int longestValidParentheses(string s) {
int n = s.size();
int ret = 0;
for (int i = 0; i < n; i++) {
int count = 0;
int max_len = 0;
for (int j = i; j < n; j++) {
if (s[j] == '(') count++;
else count--;
if (count == 0) max_len = max(max_len, j - i + 1);
if (count < 0) break;
}
ret = max(ret, max_len);
}
return ret;
}
};

*上面的代码可以AC,时间复杂度 ,空间复杂度

2.2 动态规划

这道题的动态规划解法还真的不好想,在我自闭修炼了两天之后才真的领悟到了这道题

以上是关于[动态规划] 最长有效括号的主要内容,如果未能解决你的问题,请参考以下文章

LeetCode每日一题2020.7.04 32. 最长有效括号

[Leetcode] 32.最长有效括号

Hot10032. 最长有效括号

leetcode32 最长有效括号(Hard)

leetcode32 最长有效括号

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