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

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(∣Σ∣),相加即可得到总空间复杂度。

相关文章:

  • 数据结构与算法-单链表的应用
  • 大数据处理利器:Hadoop 入门指南
  • 如何在Ubuntu上安装NVIDIA显卡驱动?
  • 【C++】C++中的类型转换
  • 使用JMeter 编写的测试计划的多个线程组如何生成独立的线程组报告
  • 一个项目的周测试的文档(Billing Service 测试文档)
  • 2025-05-07 学习记录--Python-变量 + 常量 + 命名规则 + 变量的数据类型 + 数据类型
  • PostgreSQL给新用户授权select角色
  • 【强化学习】强化学习算法 - 多臂老虎机问题
  • (三)Java数据类型与进制详解
  • 证件阅读机在景区实名制应用场景的方案
  • ModuleNotFoundError: No module named ‘numpy.typing‘
  • WPF之高级绑定技术
  • MySQL核心机制:日志系统、锁机制与事务管理的深度剖析
  • SpringBoot 集成 Ehcache 实现本地缓存
  • 日常知识点之随手问题整理(虚函数 虚函数表 继承的使用场景)
  • C++函数栈帧详解
  • 【MCP】function call与mcp若干问题整理
  • 华泰商会:顺应时代,服务企业赋能行业
  • 修改图像分辨率
  • 第三届“老山国际春茶节”活动在云南麻栗坡举办
  • 四川资阳市原市长王善平被双开,“笃信风水,大搞迷信活动”
  • 竞彩湃|霍芬海姆看到保级曙光,AC米兰专注于意大利杯
  • 悬疑推理联合书单|虫神山事件
  • 西南大学教授、重庆健美运动奠基人之一李启圣逝世
  • 澎湃研究所“营商环境研究伙伴计划”启动