#include <iostream>
using namespace std;
#include <stack>
int longestValidParentheses(string s)
{
int maxLen = 0;
int last = -1; //未匹配的')'的最近位置
stack<int> left; //未匹配的'('的位置
for (int i = 0; i < s.size(); i++)
{
if (s[i] == '(')
{
left.push(i);
}
else
{
if (left.empty())
{
last = i; //更新未匹配的)位置
}
else //匹配一对
{
left.pop(); //未匹配的(少了一个,更新长度
if (left.empty())
{
maxLen = max(maxLen, i-last);
}
else
{
maxLen = max(maxLen, i-left.top());
}
}
}
}
return maxLen;
}
int main()
{
string s = "()()((())()";
cout << longestValidParentheses(s) << endl;
return 0 ;
}
求匹配的括号的最大长度
最新推荐文章于 2022-08-03 18:37:31 发布