LeetCode-32 最长有效括号

17 篇文章 0 订阅
7 篇文章 0 订阅

最长有效括号

在这里插入图片描述
看了参考答案的提示写了一下,然后自己调试bug,发现这里对于一种情况不太行,标注

class Solution {
public:
   int longestValidParentheses(string s) {
	//最长有效括号使用,包含有效括号怎么办使用动态规划
	int len = s.size();
	int begin = 0;
	int end = 0;
	int maxlen = 0;
	string result;
	vector<int> dp(len, 0);//表示以第几个括号为结尾能达到的数量是多少( ()表示的是什么,一共表示两种形式
	for (int i = 1; i<len; ++i)
	{
		if (s[i] == ')')
		{

			if (s[i - 1] == '(')//形如()()
			{
				if (i == 1)
				{
					dp[i] = 2;
				}
				else
				{
					dp[i] = dp[i - 2] + 2;
				}
			}
			else//形如(())
			{
				if (s[i - 1] == ')'&&i - (dp[i - 1] + 1) >= 0 && s[i - (dp[i - 1] + 1)] == '(')//如果满足的话
				{
					dp[i] = dp[i - 1] + 2+(i-(dp[i-1]+2)>=0?dp[i-(dp[i-1]+2)]:0);//这里需要判断
				}
			}
		}
		if (maxlen<dp[i])
		{
			maxlen = dp[i];
			result=s.substr(i - (dp[i] - 1), dp[i]);
		}
	}
	//cout << maxlen << endl;
	//return result;
	return maxlen;
}
};

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值