python - 查找以列表形式给出的匹配圆括号对
问题描述
我有一个元组列表,如下所示:
[(' ( ', 0),
(' ) ', 4),
(' ( ', 5),
(' ( ', 6),
(' ) ', 10),
(' ) ', 11)]
我需要得到一个看起来像这样的列表:
[( 0 , 4 ), ( 5 , 11 ), ( 6 , 10 )]
主要任务是在给定的元组列表中找到所有圆括号对(括号)。细绳。
解决方案
配对括号的惯用方法是使用堆栈数据结构。
每当你看到一个左括号,你就将值压入堆栈,每当你看到一个右括号,你就从堆栈中弹出一个值以匹配它:
brackets = [(' ( ', 0), (' ) ', 4), (' ( ', 5), (' ( ', 6), (' ) ', 10), (' ) ', 11)]
stack = []
solution = []
for bracket, num in brackets:
if '(' in bracket:
stack.append((bracket, num))
elif ')' in bracket:
solution.append((stack.pop()[1], num))
print(solution)
这是由于堆栈和括号的LIFO (后进先出)性质。
含义 - 右括号应该关闭遇到的最后一个左括号。
推荐阅读
- f# - null with cast vs Unchecked.defaultof?
- css - @mixin 通过使用参数选择一个特定的占位符
- java - SBT 在 jar 中包含二进制文件
- bash - 如何打印 $@
- python - 如何使用 csv 文件中的 URL 列表使用 python selenium 持续进行网络抓取
- couchdb - couchDB的json结构中的项目ID名称或项目内的ID,最佳性能?
- angular - 如何以角度发送类似邮递员的应用程序/x-www-form-urlencoded 发布请求
- java - 在 Junit 测试 Hibernate 之前和之后运行测试插入脚本
- java - 在巨大的 Windows 目录树中查找文件列表的最快方法
- vb.net - 如何在指定站点 URL 的 PictureBox 中显示网站的 Favicon