目录
1.什么是括号匹配
我们先来看这么一组括号"((()))",再这组括号里面,左括号和右括号相同,并且我们保证了每一个右括号前面必定有左括号可以跟它组成一个完整的括号,这就叫括号匹配。
我们来看看不匹配的例子:“())(()",这就是明显的不匹配,第三个括号是右括号,但是第一个左括号已经跟第二个匹配了,那么第三个右括号就变成了孤魂野鬼,就叫不匹配。
2.怎么实现算法
从左往右我们这里的思路是通过栈来实现括号匹配。我们将所有的括号进行遍历,具体思路如下:
(1)第一个元素是”)",那不需要犹豫,绝对不匹配了;
(2)第一个元素是"(",我们将这个左括号先存到栈里面,继续读下一个,如果还是"(",继续存。假设我们存了三个"("之后,读到一个")",那么就直接用pop函数,移除栈顶的左括号,表示成功匹配了一堆。理想状况下,如果能全部匹配成果,栈里的"("可以全部被消除,表示括号匹配,如果栈不为空,那肯定是不匹配了;
(3)现在我们来处理“())(()"这种情况,第一个"("