一个算法题:括号匹配问题。
Posted deverz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一个算法题:括号匹配问题。相关的知识,希望对你有一定的参考价值。
问:给予一个字符串为:‘]]][]]]][[[[[[]]]]‘,请写出程序求出其有多少对‘[]‘?
一般这种问题都是想让你通过数据结构去处理,仔细回想一下我们学过的数据结构,栈的先进后出是否能处理这个问题?
将字符串遍历,遇到左方括号 ‘[‘ 时将其压入栈中,遇到右方括号 ‘]‘时取出栈顶元素匹配,并将对数加1,这样最后我们就求出来能有多少对方括号了。
栈的示意图:
流程图:
通过分析,我们使用php编码实现这个功能:
//括号匹配问题 $str = ‘]]][]]]][[[[[[]]]]‘; //初始化一个栈 $stack = new SplStack(); $len = strlen($str); $count = 0; for ($i = 0; $i < $len; $i++) if ($str[$i] == ‘[‘) $stack->push($str[$i]); elseif ($str[$i] == ‘]‘) if (!$stack->isEmpty() && $stack->pop() == ‘[‘) $count++; unset($stack); echo $count;//5
可以看出,通过栈去实现括号匹配文件时非常清晰简单的。
以上是关于一个算法题:括号匹配问题。的主要内容,如果未能解决你的问题,请参考以下文章
算法剑指 Offer II 085. 生成匹配的括号|22. 括号生成(java / c / c++ / python / go / rust)
算法剑指 Offer II 085. 生成匹配的括号|22. 括号生成(java / c / c++ / python / go / rust)