测试括号是否合法
没有太看懂,如果是合法的话,栈是什么时候被清空的呢?没看懂为什么stack在合法的情况下长度就是零了 没代码吗?不过我印象好像有个pop,了解下pop就知道了 好像遇到匹配的就会pop弹出问这类似的问题建议将栈类 和 算法代码一同发出,这样才能帮你解析你的代码问题
这里大概的解释下,可能和你源码会有些出入,本质上是差不多,因为算法代码不同,解释也自然有所出入:
因为你遇到括号 (、[、{ 时,才将其压入栈中,当你遇到其他括号 )、]、} 时 就在此时查看栈顶元素
判断此时循环到的括号是否与栈顶元素的括号互补:
若互补,将此时栈顶元素正常弹出并开始下次循环,所以最终若所有括号都正常匹配,就会依次从栈中弹出,最终栈为空,返回 True ,此时所给的括号序列就符合规则
若不互补,则直接结束循环,返回 False ,此时所给的括号序列就不符合规则,而因为直接结束循环而没有将此时栈顶元素弹出,所以导致栈不为空
页:
[1]