目录
1 栈的基本应用
1.1 括号匹配
问题:
假设表达式有三种括号:圆括号“()”,花括号“{}”,方括号“[]”。它们可互相嵌套,如{([])}或{([])()[]}均为正确格式。而{)),{[()]均为不正确格式。
输入由三种括号构成的字符串,如何检测字符串里括号格式的正确性?
算法思路:
- 创建一个空栈,开始顺序扫描所有字符
- 遇到左括号入栈
- 遇到右括号则弹出已入栈的栈顶左括号(若栈为空没有左括号,直接退出报错)
- 检查两括号是否匹配(若两括号类型不一样,直接退出报错)
- 若所有字符都扫描完,检查栈里是否还剩余左括号(若栈里还有左括号剩余,则报错)
算法核心就是:遇到左括号就入栈,遇到右括号就弹出栈顶的左括号与右括号匹配
匹配失败有三种情况: