tj
2024-06-02 17:40:51
发布于:北京
#include <iostream>
#include <stack>
#include <string>
using namespace std;
int main() {
string s;
getline(cin, s); // 读取输入的字符串
int maxLen = 0; // 记录最长有效括号子串的长度
stack<int> st; // 用于存储未匹配的左括号的索引
st.push(-1); // 初始化栈底元素为-1,用于处理边界情况
for (int i = 0; i < s.size(); ++i) {
if (s[i] == '(') {
st.push(i); // 遇到左括号,将其索引入栈
} else {
st.pop(); // 遇到右括号,弹出栈顶的左括号索引
if (st.empty()) {
st.push(i); // 如果栈为空,说明当前右括号没有匹配的左括号,将当前右括号索引入栈
} else {
// 计算当前有效括号子串的长度,并更新最大长度
maxLen = max(maxLen, i - st.top());
}
}
}
cout << maxLen;
return 0;
}
这里空空如也
有帮助,赞一个