力扣32.最长有效括号
cpp
class Solution {
public:
int longestValidParentheses(string s) {
int n = s.size();
int res=0;
int start = -1;
vector<int> st;
for(int i=0;i<n;i++)
{
if(s[i] == '(')
st.push_back(i);
else
{
//前面没有( , (开启下一段)下一段的开始更新为当前下标
if(st.empty())
start = i;
else
{
//有(先弹出
st.pop_back();
//如果前面在(了,说明上一次不匹配的)之后的所有括号全部匹配完
if(st.empty())
res = max(res,i - start);
//上一次不匹配的)之后还有(剩余 这一段现在只能取到(的下标
else
res = max(res,i - st.back());
}
}
}
return res;
}
};