LeetCode32.Longest-Valid-Parentheses<最长有效括号>

题目:

思路:

遍历括号.遇到右括号然后前一个是左括号 那就res+2,然后重定位 i 的值 并且长度减少2;

但是问题在于无法判断最长的括号.只能得到string内的全部括号长度.

错误代码:

写过一题类似的,那题是找括号数.记得是使用的栈,但是死活写不出来.

看完答案觉得答案有一些反常.

代码是:

cpp 复制代码
//code
 
class Solution {
public:
    int longestValidParentheses(string s) {
        int n = s.length();
        int res = 0;
        stack<int> st; // 栈用来记录左括号的位置
        st.push(-1); // 将-1压入栈中,作为一个"虚拟的"左括号位置
        for (int i = 0; i < n; i++) {
            if (s[i] == '(') { // 如果是左括号,将其位置压入栈中
                st.push(i);
            } else { // 如果是右括号
                st.pop(); // 弹出栈顶的左括号位置
                if (st.empty()) { // 如果栈为空,说明当前的右括号没有匹配的左括号
                    st.push(i); // 将当前的右括号位置压入栈中,作为下一个"虚拟的"左括号位置
                } else { // 如果栈不为空,计算当前的括号子串长度
                    res = max(res, i - st.top());
                }
            }
        }
        return res; // 返回最长有效括号长度
    }
};

在代码中当判断到右括号时 栈st 先 pop 然后再进行判断. 有点神奇..

相关推荐
小六学编程4 分钟前
二分查找详解:从普通二分到左右边界
算法·c/c++
wayz115 分钟前
Volume:PVO(百分比成交量震荡指标)技术指标详解
算法·金融·数据分析·量化交易·特征工程
毕竟是shy哥6 分钟前
PromptHash:基于亲和提示协同学习的自适应哈希检索跨模态算法
学习·算法·哈希算法
甄心爱学习6 分钟前
【项目实训(个人12)】
人工智能·python·算法
Highcharts.js13 分钟前
通过CSS变量实现图表色彩与逻辑解耦、图表主题统一|Highcharts Palette 详解
c++·echarts·highcharts·可视化开发·palette·styledmode·图表样式
起个破名想半天了15 分钟前
算法与数据结构之Dijkstra算法
数据结构·dijkstra·单源最短路径·迪杰斯特拉算法
玖玥拾19 分钟前
C/C++ 基础笔记(八)
c语言·c++
郝学胜_神的一滴29 分钟前
Qt 高级开发 027: QTabWidget自定义样式表美化实战
c++·qt
团象科技31 分钟前
走访近百支出海技术团队后的海外云计算资源选型实操观察
大数据·人工智能·算法
啦啦啦啦啦zzzz38 分钟前
数据结构:哈夫曼编码
数据结构·c++·哈夫曼编码