题目链接:https://leetcode.cn/problems/longest-valid-parentheses/
题目如下:
class Solution {
public:
int longestValidParentheses(string s) {
//栈模拟,将无法匹配的括号位置全部置1
//此时,寻找最长的连续0的长度
stack<int> stk;
vector<int> flag(s.size(),0);
for(int i=0;i<s.size();i++){
if(s[i]=='(') stk.push(i);//左括号的下标放入栈中,在栈中只存放左括号
else {
if(stk.size()==0) flag[i]=1;//多余的右括号标记
else stk.pop();
}
}
//此时栈中存放的是未匹配完的左括号
while(stk.size()!=0){
flag[stk.top()]=1;
stk.pop();
}
int len=0,res=0;
for(int i=0;i<s.size();i++){
if(flag[i]==1) {len=0;continue;}
len++;
res=max(res,len);
}
return res;
}
};