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

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

相关推荐
MicroTech20259 分钟前
微算法科技(NASDAQ: MLGO)探索Grover量子搜索算法,利用量子叠加和干涉原理,实现在无序数据库中快速定位目标信息的效果。
数据库·科技·算法
qianbo_insist20 分钟前
c++ python 共享内存
开发语言·c++·python
今天背单词了吗98035 分钟前
算法学习笔记:8.Bellman-Ford 算法——从原理到实战,涵盖 LeetCode 与考研 408 例题
java·开发语言·后端·算法·最短路径问题
手握风云-1 小时前
优选算法的链脉之韵:链表专题
数据结构·算法·链表
Coding小公仔1 小时前
LeetCode 151. 反转字符串中的单词
开发语言·c++·算法
稳兽龙1 小时前
P1098 [NOIP 2007 提高组] 字符串的展开
c++·算法·模拟
G.E.N.1 小时前
开源!RAG竞技场(2):标准RAG算法
大数据·人工智能·深度学习·神经网络·算法·llm·rag
写个博客1 小时前
暑假算法日记第三天
算法
✿ ༺ ོIT技术༻1 小时前
剑指offer第2版:动态规划+记忆化搜索
算法·动态规划·记忆化搜索