跳至正文
View Categories

< 1 min read

298 括号的匹配1 #

  1. 问题描述
  2. 辅助栈法解决括号匹配
  3. 算法流程

问题描述 #

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

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

辅助栈法解决括号匹配 #

栈先入后出的特点恰好与本题括号排序特点一致,将输入的字符串挨个输入栈中,如果是左括号直接入栈,如果是右括号则将对应栈顶的左括号出栈,那么遍历完所有括号后栈仍旧为空。
使用哈希表构建左右括号对应关系:键为右括号,值为左括号;这样查询括号是否匹配只需 O(1)时间复杂度;建立栈,遍历字符串并按照算法流程一一判断

算法流程 #

  1. 遍历字符串
  2. 对单个字符,如果是左括号则入栈push
  3. 对单个字符,如果是右括号则进行匹配,判断栈顶字符是否和当前字符匹配,如果不匹配则提前结束;如果匹配,则将此栈顶字符出栈
  4. 遍历结束后判断栈是否为空,如有剩余字符则返回false

下面是案例:

小结 #

  • 掌握括号匹配的解法
  • 掌握辅助栈的用法
  • 习题 #

    1. 详细描述算法的流程
    2. 体会辅助栈在问题中所起的作用