Leetcode:有效的括号

题目链接:20. 有效的括号 - 力扣(LeetCode)

普通版本(辅助栈 + 哈希表)

cpp 复制代码
class Solution {
public:
    bool isValid(string s) {
        unordered_map<char,int> m{{'(',1},{'[',2},{'{',3},
                                {')',4},{']',5},{'}',6}};//使用哈希表将左右括号与数字关联,便于后续使用

        stack<char> st;
        bool istrue=true;//
        for(char c:s)
        {
            int flag=m[c];//获取字符串s的某个字符对应的数字
            if(flag>=1&&flag<=3)//如果是左括号就将其入栈
            {
                st.push(c);
            } 
            else if (!st.empty() && m[st.top()] == flag-3)//如果当前栈不为空,且当前字符是栈顶元素对应的右括号,就将栈顶元素出栈
            {//不为空empty()返回false,为空返回true
                st.pop();
            }
            else
            {
                istrue=false;
                break;
            }
        }
        if(!st.empty()) //循环结束后栈不为空,就表示括号没有消完,所以该字符串s无效
        {
            istrue=false;
        }
        return istrue;
    }
};

时间复杂度:O(N)

空间复杂度:O(N)(最坏情况下字符串s全是左括号没有右括号,此时栈的长度就是字符串s的长度)

优化版本(待补充)

~over~

相关推荐
拂拉氏3 分钟前
【知识讲解-题目讲解】算法系列之动态规划入门(下)
算法·leetcode·动态规划
skywalk81636 分钟前
继续推进心语项目6.15 @CodeArts
开发语言·算法·编程
2601_961845156 分钟前
花生十三图推思维导图|图形推理|技巧
数据结构·算法·链表·贪心算法·排序算法·线性回归·动态规划
开开心心就好10 分钟前
自动生成小学数学题库支持导出Word
人工智能·安全·leetcode·贪心算法·ocr·音视频·语音识别
bIo7lyA8v11 分钟前
算法复杂度的可视化评估与优化策略研究的技术8
算法
Skrrapper19 分钟前
从 DeepSeek、Qwen 到 GPT:一次企业级 AI 知识库项目的模型选型复盘
人工智能·gpt·算法
江屿风20 分钟前
C++图论基础Bellman-Ford与spfa算法如何判断负环
开发语言·c++·笔记·算法·图论
YHHLAI22 分钟前
LeetCode 136.只出现一次的数字 | 从遍历统计到位运算极致优化
算法·leetcode·职场和发展
CoderYanger28 分钟前
Java EE:6.网络编程套接字(第一弹)
java·运维·服务器·网络·面试·职场和发展·java-ee
lihao lihao30 分钟前
Linux线程同步与互斥
linux·数据结构·算法