//最长有效括号
//题目描述:给定一个只包含 '(' 和 ')' 的字符串,找出最长的包含有效括号的子串的长度。
//
//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;
}
本文介绍了如何使用C++中的栈数据结构解决最长有效括号子串问题,通过遍历输入字符串,维护一个开始位置和栈来跟踪匹配的括号,最终返回最长的有效括号子串的长度。

被折叠的 条评论
为什么被折叠?



