最长有效括号
题目链接:最长有效括号
给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号 子串 的长度。
左右括号匹配,即每个左括号都有对应的右括号将其闭合的字符串是格式正确的,比如 "(()())"。
方法一:栈
class Solution {
public:
int longestValidParentheses(string s) {
vector<int> t;
stack<int> ss;
for (int i = 0;i < s.size();i++) {
if (s[i] == '(') {
ss.push(i);
}else {
if (ss.size() && s[ss.top()] == '(') {
t.push_back(ss.top());
t.push_back(i);
ss.pop();
}
}
}
int ans = 0;
int tt = 1;
sort(t.begin(),t.end());
for (int i = 1;i < t.size();i++) {
if (t[i] == t[i-1] + 1) {
tt++;
ans = max(ans,tt);
}else {
tt = 1;
}
}
return ans;
}
};