data-structures - 使用堆栈算法的括号/括号匹配和最大元素
问题描述
问题:假设我们正在寻找 ( [ ( { [ ] [ ] } ( ( ( ) ) ) ) { } ] )
使用堆栈来处理这个表达式。任何时候堆栈上的最大元素数是多少?
我知道堆栈以 LIFO 顺序运行,因此我不确定如何将其与最大元素数相匹配,以及它与表达式有何关系。这个问题对我来说不清楚。请问你怎么看?
我试图回答它并得到 9,但根据我得到的答案,我发现任何时候堆栈上的最大元素数是 6。
解决方案
如果你有一个左括号,你把它放在堆栈上。如果您有一个与堆栈顶部的左括号匹配的右括号,则将该括号从堆栈中弹出,否则放入堆栈。在此表达式中,堆栈将如下所示:
(
( [
( [ (
( [ ( {
( [ ( { [
( [ ( {
( [ ( { [
( [ ( {
( [ (
( [ ( (
( [ ( ( (
( [ ( ( ( (
( [ ( ( (
( [ ( (
( [ (
( [
( [ {
推荐阅读
- dart - 如何在 StatelessWidget 中更改 StatefulWidget 的状态?
- java - 如何使用泛型类检查类有效性
- groovy - Groovy JDK 11 禁用警告消息
- typescript - 打字稿:声明类实现接口
- r - 在 data.table 的列中返回一个向量
- css - 8 位十六进制不是背景颜色值
- windows - jenkins 用户文件夹的用途是什么,这些配置文件是什么?
- python - Python2.7安装setuptools再安装pip总是报错
- mongodb - 将大量数据从 Elasticsearch 2 导入到 Mongodb 因内存限制而失败
- java - JDK 10.0.2 的 Netbeans 9 java.lang.NullPointerException 问题