首页 > 解决方案 > 使用堆栈算法的括号/括号匹配和最大元素

问题描述

问题:假设我们正在寻找 ( [ ( { [ ] [ ] } ( ( ( ) ) ) ) { } ] )使用堆栈来处理这个表达式。任何时候堆栈上的最大元素数是多少?

我知道堆栈以 LIFO 顺序运行,因此我不确定如何将其与最大元素数相匹配,以及它与表达式有何关系。这个问题对我来说不清楚。请问你怎么看?

我试图回答它并得到 9,但根据我得到的答案,我发现任何时候堆栈上的最大元素数是 6。

标签: data-structuresstack

解决方案


如果你有一个左括号,你把它放在堆栈上。如果您有一个与堆栈顶部的左括号匹配的右括号,则将该括号从堆栈中弹出,否则放入堆栈。在此表达式中,堆栈将如下所示:

  • (
  • ( [
  • ( [ (
  • ( [ ( {
  • ( [ ( { [
  • ( [ ( {
  • ( [ ( { [
  • ( [ ( {
  • ( [ (
  • ( [ ( (
  • ( [ ( ( (
  • ( [ ( ( ( (
  • ( [ ( ( (
  • ( [ ( (
  • ( [ (
  • ( [
  • ( [ {

推荐阅读