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.
class Solution {
public:
int longestValidParentheses(string s) {
vector<pair<char, int>>str;
for (int i = 0; i < s.length(); i++)
str.push_back(pair<char, int>(s[i], i));
bool f = true;
while (!str.empty()&&f)
{
f = false;
int k = 0;
while (!str.empty()&&k < str.size()-1)
{
if (str[k].first == '('&&str[k + 1].first == ')')
{
f = true;
str.erase(str.begin() + k, str.begin() + k + 2);
}
else k++;
}
}
if (str.empty())
return s.length();
int maxlen = 0;
if (str[0].second>maxlen)
maxlen = str[0].second;
if (s.length() - str.back().second - 1 > maxlen)
maxlen = s.length() - str.back().second - 1;
for (int i = 1; i < str.size(); i++)
if (str[i].second - str[i - 1].second - 1>maxlen)
maxlen = str[i].second - str[i - 1].second - 1;
return maxlen;
}
};
accepted