栈-20.有效的括号-力扣(LeetCode)

一、题目解析

对于这个字符串需要左右括号匹配,并且是以正确的顺序

二、算法原理

解法1.图+栈

解法2.用else if代替图+栈

正常做法:对于三种左括号直接进栈('(','[','{'进栈),然后判断与下一个括号是否匹配,匹配则出栈,不匹配则返回false。

改进:当遇到三种左括号时,可以进栈对应的右括号(')',']','}'进栈),然后判断与下一个括号是否相同,当栈为空或者栈顶元素括号不匹配时,返回false,然后出栈。

最后返回值为栈是否为空,为空则返回true,所有括号匹配完,反之为false。

思考过后可以自己实现一下,链接:20. 有效的括号 - 力扣(LeetCode)

三、代码示例

cpp 复制代码
class Solution {
public:
    bool isValid(string s) 
    {
        stack<char> k;
        for(auto e : s)
        {
            if(e == '(') k.push(')');
            else if(e == '[') k.push(']');
            else if(e == '{') k.push('}');
            else{
                if(k.empty() || k.top() != e) return false;
                k.pop();
            }
        }
        return k.empty();
    }
};

看到最后,如果对您有所帮助,还请点赞、收藏和关注,点点关注不迷路,我们下期再见!

相关推荐
C^h5 小时前
c++ string
开发语言·c++
raindayinrain5 小时前
c++高性能--原子操作,无锁编程,操作顺序
开发语言·c++·性能优化
学逆向的5 小时前
C++ 合并命名空间
开发语言·c++·网络安全
Zhao-Jichao6 小时前
VS2026 打包 C++ 程序生成 EXE,借助 Installer Project 扩展工具
开发语言·c++
小徐不徐说7 小时前
C++ 接口与插件设计:从工厂注册到 Qt 动态插件
数据库·c++·qt·系统架构·程序设计
大都督会赢的7 小时前
C++第一节课
开发语言·c++
UIU1147 小时前
P1233 [ICPC 2001 Taejon R] 木棍加工
数据结构·c++·算法·动态规划
论文复现现场7 小时前
WRF、FEA 能用 L40S 加速吗?求解器检查、断点恢复与长期运行
java·数据库·算法·wrf·有限元分析·gpu计算·断点续算
ZhengEnCi7 小时前
用 AI 写代码为什么拼到最后还是拼人:算力瓶颈与领域专家提示词的本质差异
算法·架构
TMedical8 小时前
MedPlanning 截骨模拟矫形功能
c++·图像处理·人工智能·qt·健康医疗