必过华为机考 发表于 2022-1-15 19:26:05

测试括号是否合法

没有太看懂,如果是合法的话,栈是什么时候被清空的呢?没看懂为什么stack在合法的情况下长度就是零了

qq1151985918 发表于 2022-1-15 19:51:53

没代码吗?不过我印象好像有个pop,了解下pop就知道了

大马强 发表于 2022-1-15 19:56:42

好像遇到匹配的就会pop弹出

Twilight6 发表于 2022-1-15 20:59:50


问这类似的问题建议将栈类 和 算法代码一同发出,这样才能帮你解析你的代码问题

这里大概的解释下,可能和你源码会有些出入,本质上是差不多,因为算法代码不同,解释也自然有所出入:

      因为你遇到括号 (、[、{ 时,才将其压入栈中,当你遇到其他括号 )、]、} 时 就在此时查看栈顶元素

      判断此时循环到的括号是否与栈顶元素的括号互补:

            若互补,将此时栈顶元素正常弹出并开始下次循环,所以最终若所有括号都正常匹配,就会依次从栈中弹出,最终栈为空,返回 True ,此时所给的括号序列就符合规则

            若不互补,则直接结束循环,返回 False ,此时所给的括号序列就不符合规则,而因为直接结束循环而没有将此时栈顶元素弹出,所以导致栈不为空

页: [1]
查看完整版本: 测试括号是否合法