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 然后再进行判断. 有点神奇..

相关推荐
库玛西7 小时前
深入浅出传输层:UDP 与 TCP 协议全景指南
linux·服务器·网络·c++·笔记·tcp/ip·udp
Chester_199913 小时前
CSP202203C.计算资源调度器
开发语言·数据结构·c++·蓝桥杯
裕晟资质规划14 小时前
武器装备科研生产单位保密资质申请方法论:条件模型与流程拆解
人工智能·算法
会周易的程序员14 小时前
给 PLC 写一个字节码虚拟机:STVM 虚拟机架构设计
开发语言·c++·虚拟机·软plc·iec61131·stvm
小灰灰搞电子15 小时前
完全驾驭 Qt 与数据库:C++ ORM 框架 QxOrm 原理与实践指南
数据库·c++·qt
QT界面美化性能优化15 小时前
QT+AI:使用AI技术为QT应用程序赋能
c++·人工智能·qt·opencv·qt教程·qt6.3
en.en..15 小时前
C语言 标准输入 / 输出缓冲区
算法
吃好睡好便好17 小时前
查找函数的使用
学习·算法·matlab·生活·查找函数
学习星球17 小时前
单调栈——从“找下一个更大的“到柱状图中的最大矩形
数据库·c++·算法·leetcode·xcode
小灰灰搞电子18 小时前
C++ 引用折叠详解
c++