码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode]Longest Valid Parentheses

时间:2014-06-05 01:16:14      阅读:215      评论:0      收藏:0      [点我收藏+]

标签:括号配对

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 ")()())", where the longest valid parentheses substring is "()()", which has length = 4.

自己没写对,看的网上的资料:

这道题时间限制在O(n),用一个 stack 实现括号配对+统计, 为了方便实现,写成数组的形式。

对不同深度的括号配对统计个数,一层配对成功把该层统计结果加给上一层,这一层清空

class Solution {
public:
    int longestValidParentheses(string s) {
   int ans = 0;
	std::vector<int> count(1, 0);
	for (int i = 0;  i < s.size(); i++)
	{
		if (s[i] == '(')
		{
			count.push_back(0);
		}
		else
		{
			if (count.size() > 1)
			{
				count[count.size() - 2] += *count.rbegin() + 2;
				count.pop_back();
				ans = ans > *count.rbegin() ? ans : *count.rbegin();
			}
			else
			{
				count[0] = 0;
			}
		}
	}
	return ans;
    }
};


[LeetCode]Longest Valid Parentheses,布布扣,bubuko.com

[LeetCode]Longest Valid Parentheses

标签:括号配对

原文地址:http://blog.csdn.net/jet_yingjia/article/details/27214407

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!