当前位置: 首页 > ds >正文

LeetCode20_有效的括号

LeetCode20_有效的括号

  • 标签:#栈 #字符串
    • Ⅰ. 题目
    • Ⅱ. 示例
  • 0.个人方法

标签:#栈 #字符串

Ⅰ. 题目

  • 给定一个只包括 ‘(’,‘)’,‘{’,‘}’,‘[’,‘]’ 的字符串 s ,判断字符串是否有效。

  • 有效字符串需满足:

    • 左括号必须用相同类型的右括号闭合。
    • 左括号必须以正确的顺序闭合。
    • 每个右括号都有一个对应的相同类型的左括号。

Ⅱ. 示例

· 示例 1:
输入:s = “()”
输出:true

· 示例 2:
输入:s = “()[]{}”
输出:true

· 示例 3:
输入:s = “(]”
输出:false

· 示例 4:
输入:s = “([])”
输出:true

0.个人方法

这是一道栈的经典匹配问题。直接遍历字符串s:遇到左括号就入栈;遇到右括号就和栈顶的左括号看看是否匹配,不匹配的话直接false,匹配的话就继续遍历,直到所有括号处理完毕。如果最后栈不为空,说明有多余的左括号没有被配对,这也是不可以的,也返回false。

class Solution {
public:bool isValid(string s) {std::stack<char> SStack;std::unordered_map<char, char> bracket_map = {{')', '('}, {'}', '{'}, {']', '['}};for (char ch : s){if (ch == '(' || ch == '{' || ch == '['){SStack.push(ch);}else if (ch == ')' || ch == '}' || ch == ']'){if (SStack.empty() || SStack.top() != bracket_map[ch]){return false;}else{SStack.pop();   // 弹出栈顶元素}}}return SStack.empty();}
};
  • 复杂度分析

    • 时间复杂度:O(n),其中 n 是字符串 s 的长度。

    • 空间复杂度:O(n+∣Σ∣),其中 Σ 表示字符集,本题中字符串只包含 6 种括号,∣Σ∣=6。栈中的字符数量为 O(n),而哈希表使用的空间为 O(∣Σ∣),相加即可得到总空间复杂度。

http://www.xdnf.cn/news/4647.html

相关文章:

  • 第2章 算法分析基础
  • 记录一下spring-cloud-starter-alibaba-nacos-config 2023.0.3.2与springboot版本及配置问题
  • 如何创建RDD
  • 【AI News | 20250507】每日AI进展
  • MySQL中为什么使用B+树结构、B+树和普通的平衡树的区别
  • Spark jdbc写入崖山等国产数据库失败问题
  • Linux/AndroidOS中进程间的通信线程间的同步 - 共享内存
  • AI 实践探索:辅助生成测试用例
  • 高性能轻量级Rust HTTP服务器框架Hyperlane:开启网络服务开发新体验
  • NLP核心技术解析:大模型与分词工具的协同工作原理
  • 排序算法——桶排序
  • 注意力机制(Attention)
  • 【关于ESP8266下载固件库的问题】
  • C++ 析构函数
  • 【Ollama】docker离线部署Ollama+deepseek
  • 从机器人到调度平台:超低延迟RTMP|RTSP播放器系统级部署之道
  • DeepSeek 入门:从注册到首轮对话全流程
  • Mysql如何完成数据的增删改查(详解从0到1)
  • 打造个人知识库,wsl+ollama部署deepseek与vscode集成
  • NetBox Docker 全功能部署方案(Ubuntu 22.04 + Docker)
  • k8s 中 deployment 管理的多个 pod 构成集群吗
  • PostgreSQL 查询历史最大进程数方法
  • 商汤科技前端面试题及参考答案
  • 服务器上机用到的设备
  • .net在DB First模式使用pgsql
  • K8s节点宕机自愈全流程解析
  • 【数据结构入门训练DAY-28】蓝桥杯算法提高VIP-产生数
  • 【前端基础】7、CSS的字体属性(font相关)
  • React Router Vs Vue Router
  • AGV智能搬运机器人:富唯智能引领工业物流高效变革