[动态规划] 最长有效括号
Posted 热爱生活的小熊猫
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[动态规划] 最长有效括号相关的知识,希望对你有一定的参考价值。
动态规划系列专题 LeetCode32
在之前我们也推送过很多动态规划系列的题目,但由于动态规划作为算法界的扛把子真的很难,因此我们今后会陆续推送多期动态规划专题题目,挑选的题目大都属于中等偏上难度(也会有部分有代表性的较为简单的题目)。希望通过整理这类难题,能和大家一起将动态规划这块硬骨头啃下来!
给定一个只包含 '('
和 ')'
的字符串,找出最长的包含有效括号的子串的长度。
示例:
输入: "(()"
输出: 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 动态规划
这道题的动态规划解法还真的不好想,在我自闭修炼了两天之后才真的领悟到了这道题
以上是关于[动态规划] 最长有效括号的主要内容,如果未能解决你的问题,请参考以下文章