最长有效括号

示例

输入:(()(())

输出:6

最长有效括号_第1张图片

实现

 

int maxLenBracket(string data) {

	if (data.length() == 0)
	{
		return 0;
	}

	vector dp(data.length(), 0);

	int pre = 0;
	int res = 0;

	for (int i = 1; i < data.length(); i++)
	{
		if (data[i] == ')')
		{
			pre = i - dp[i - 1] - 1;
			if (pre >= 0 && data[pre] == '(')
			{
				dp[i] = dp[i - 1] + 2 + (pre > 0 ? dp[pre - 1] : 0);
			}
		}

		res = max(res, dp[i]);
	}

	return res;
}

 

你可能感兴趣的:(leetcode,算法,最长有效括号)