//最长有效括号
//题目描述:给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。
//
//cpp
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int longestValidParentheses(string s) {
stack<int> st;
int start = 0;
int max_len = 0;
for (int i = 0; i < s.size(); ++i) {
if (s[i] == '(') {
st.push(i);
}
else {
if (st.empty()) {
start = i + 1; // 更新起始位置
}
else {
st.pop();
if (st.empty()) {
max_len = max(max_len, i - start + 1); // 更新最大长度
}
else {
max_len = max(max_len, i - st.top()); // 更新最大长度
}
}
}
}
return max_len;
}
int main() {
string s = "((()()()";
cout << "最长有效括号的长度为:" << longestValidParentheses(s) << endl;
return 0;
}