Leetcode:有效的括号

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

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

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~

相关推荐

  1. Leetcode有效括号

    2024-06-09 05:18:01       32 阅读
  2. LeetCode 20. 有效括号

    2024-06-09 05:18:01       56 阅读
  3. Leetcode 20. 有效括号

    2024-06-09 05:18:01       38 阅读
  4. LeetCode 20.有效括号

    2024-06-09 05:18:01       30 阅读
  5. Leetcode 20:有效括号

    2024-06-09 05:18:01       38 阅读
  6. LeetCode 20. 有效括号

    2024-06-09 05:18:01       20 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-06-09 05:18:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-09 05:18:01       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-09 05:18:01       82 阅读
  4. Python语言-面向对象

    2024-06-09 05:18:01       91 阅读

热门阅读

  1. 深入解析Kafka消息丢失的原因与解决方案

    2024-06-09 05:18:01       30 阅读
  2. 大模型日报2024-06-08

    2024-06-09 05:18:01       34 阅读
  3. v-model的工作原理是什么

    2024-06-09 05:18:01       28 阅读
  4. JFinal学习

    2024-06-09 05:18:01       31 阅读
  5. ts和js有什么不同

    2024-06-09 05:18:01       27 阅读
  6. C#-if判断语句

    2024-06-09 05:18:01       27 阅读