Parentheses Matching
括号匹配
基本思路
括号匹配使用 栈 保存尚未匹配的左括号。扫描字符串时:
- 遇到左括号,入栈。
- 遇到右括号,检查栈顶左括号是否匹配。
- 匹配则弹出栈顶;不匹配则失败。
- 扫描结束后,栈为空才表示全部匹配。
失败情况
括号匹配失败通常有三类:
- 扫描到右括号时栈空:右括号多了。
- 栈顶左括号与当前右括号类型不匹配:括号交叉或类型错误。
- 扫描结束后栈非空:左括号多了。
也可以记成三种错误:右括号单身、左右括号不匹配、左括号单身。
C 代码
1 | bool IsMatchingPair(char left, char right) { |
记忆点
左括号入栈,右括号只和最近的未匹配左括号比较。这个“最近”正好对应栈的后进先出性质。
括号匹配是栈应用的基础题型;表达式求值也依赖类似的“暂存尚未处理的符号”思想,见 表达式求值。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Elian's blog page!