栈-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();
    }
};

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

相关推荐
YH55269841 天前
GPT‑5.6 Sol 原本支持 1M 上下文,Codex 现已放开此前限制,如何看待这次调整?
java·jvm·人工智能·gpt·算法·chatgpt
吃着火锅x唱着歌1 天前
Effective C++ 学习笔记 条款43 学习处理模板化基类内的名称
c++·笔记·学习
felixking1 天前
C++20 协程
开发语言·c++·协程
遥感知识服务1 天前
从局部阈值、双极化到暗地表剔除:NASA OPERA DSWx-S1全球动态水体算法拆解
大数据·人工智能·深度学习·神经网络·算法·机器学习
晚风醉蝶1 天前
1-13-TimSort
算法
ZJU_统一阿萨姆1 天前
【算子开发】算子融合与Softmax_LayerNorm实现
人工智能·算法·语言模型·硬件架构
小小龙学IT1 天前
FlatBuffers 深度解析:Google 开源零拷贝序列化库完全指南
c++·开源
叩码以求索1 天前
浅谈:前序遍历反转法求解N叉树的后序遍历
算法
wuminyu1 天前
JDK21中虚拟线程和FFM协同实现高并发源码剖析
java·linux·c语言·jvm·c++
SWAGGY..1 天前
【C++进阶】:(1)继承机制详解
java·jvm·c++