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~

相关推荐
爱吃生蚝的于勒5 分钟前
C语言最简单的扫雷实现(解析加原码)
c语言·开发语言·学习·计算机网络·算法·游戏程序·关卡设计
秋说1 小时前
【数据结构 | C++】整型关键字的平方探测法散列
数据结构·c++·算法
weixin_478689761 小时前
【回溯法】——组合总数
数据结构·python·算法
戊子仲秋2 小时前
【LeetCode】每日一题 2024_11_14 统计好节点的数目(图/树的 DFS)
算法·leetcode·深度优先
TaoYuan__3 小时前
机器学习的常用算法
人工智能·算法·机器学习
好心的小明3 小时前
【蓝桥杯】CB组国二攻略(省赛地点:广东)
职场和发展·蓝桥杯
用户40547878374824 小时前
深度学习笔记 - 使用YOLOv5中的c3模块进行天气识别
算法
十七算法实验室4 小时前
Matlab实现麻雀优化算法优化随机森林算法模型 (SSA-RF)(附源码)
算法·决策树·随机森林·机器学习·支持向量机·matlab·启发式算法
黑不拉几的小白兔4 小时前
PTA部分题目C++重练
开发语言·c++·算法
迷迭所归处4 小时前
动态规划 —— dp 问题-买卖股票的最佳时机IV
算法·动态规划