- 最长有效括号
给你一个只包含 '(' 和 ')' 的字符串,找出最长有效(格式正确且连续)括号子串的长度。
class Solution {
public:
int longestValidParentheses(string s) {
// 堆栈 数组 链表 队列
// 用栈
stack<int> stk;
int maxans = 0;
// 初始值 不匹配位置-1
stk.push(-1);
for(int i = 0; i < s.size(); ++i) {
if (s[i] == '(') {
stk.push(i);
} else if (s[i] == ')') {
stk.pop();
if (!stk.empty()) {
int length = i - stk.top();
maxans = max(maxans, length);
} else {
// 作为初始值 覆盖被弹出位置,记录last不匹配位置
stk.push(i);
}
}
}
return maxans;
}
};
// 需要判断length是否连续计数
// (()((())
// (()((()))
// (()((())))
// (((()