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~

相关推荐
小帽子_12314 分钟前
储能 SOC/SOH 精准估算技术:储能工况下算法优化与误差修正方案
算法
hhlongg20 分钟前
FFT分析
算法
水龙吟啸43 分钟前
华为2026.6.17机考选择题+编程题【速刷敲黑板】
人工智能·深度学习·算法·华为
程序员小远43 分钟前
性能测试之性能调优
自动化测试·软件测试·python·测试工具·职场和发展·测试用例·性能测试
凌波粒1 小时前
LeetCode--53. 最大子序和(贪心算法)
算法·leetcode·贪心算法
Hesionberger1 小时前
快速求解完全平方数的最少数量
开发语言·数据结构·python·算法·leetcode·c#
c238561 小时前
《序列 DP:C++ 中的“最长”套路与编辑距离》
c++·算法·动态规划
aqiu1111111 小时前
【算法日记 19】LeetCode 1. 两数之和:梦开始的地方,哈希表的降维打击
算法·leetcode·职场和发展
CS创新实验室10 小时前
算法、齿轮与硅基大脑:数值计算发展简史
人工智能·算法·数值计算
海石12 小时前
1563分的简单题,可能就简单在能被暴力AC
算法·leetcode