class Solution {
public:
// 栈用来存放符号下标,因为下标相减和长度相差1,因此先初始放入一个元素-1
// 当符号为'('时,直接进栈,否则,先将栈顶元素出栈,判断当前栈是否为空,若为空,将当前下标进栈,比如例子')()',将-1出栈后
// 第一个')'的下标要进栈,当作新的栈底,若不为空,就计算当前元素的下标和栈顶下标的差值,就是这个子字符串的最大合法括号长度,/// 遍历完后,得出结果
int longestValidParentheses(string s) {
int maxn=0;
stack<int>stack;
stack.push(-1);//-1用来做栈底
for(int i=0;i<s.size();i++)
{
if(s[i]=='(')
{
stack.push(i);//栈中存储的是下标
}
else
{
stack.pop();
if(stack.empty())
{
stack.push(i);
}
else{
maxn=max(maxn,i-stack.top());
}
}
}
return maxn;
}
};
LeetCode:32. 最长有效括号
最新推荐文章于 2025-04-22 09:30:00 发布
本文深入探讨了一种高效算法,用于寻找字符串中最长的有效括号子串长度。通过使用栈来跟踪括号的下标,算法巧妙地解决了这一问题。在遍历字符串过程中,利用栈顶元素和当前下标计算合法括号子串的长度,最终得到最长的有效括号子串长度。
524

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



