标签:括号配对
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