您的位置:首页 > 其它

[LeetCode]Longest Valid Parentheses

2014-05-27 16:43 357 查看
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;
}
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: