(括号匹配) Python实现括号匹配方法详解
可以使用Python实现括号匹配的方法。这里主要是通过使用栈的数据结构实现括号匹配。具体的实现步骤如下:
- 定义匹配的括号对,并分别存储左括号和右括号。
SYMBOLS = {'}': '{', ']': '[', ')': '(', '>': '<'}
SYMBOLS_L, SYMBOLS_R = SYMBOLS.values(), SYMBOLS.keys()
- 创建一个空栈(在Python中可以使用列表代替)。
arr = []
- 逐一检查表达式中的字符:
- 如果它是一个开括号,我们把它推到栈上。
- 如果它是一个闭合的括号,我们检查栈是否为空。如果栈为空,则返回False。如果不为空,我们与栈顶元素进行比较。如果它与栈顶元素匹配,我们弹出栈顶元素并继续。如果不匹配,返回False。
for c in s:
if c in SYMBOLS_L:
arr.append(c)
elif c in SYMBOLS_R:
if arr and arr[-1] == SYMBOLS[c]:
arr.pop()
else:
return False
- 在扫描过程中,如果所有的括号都匹配,那么栈应该是空的。如果栈不为空,则表示还有一些未匹配的左括号,因此我们应该返回False。
return not arr
- 完整的括号匹配函数定义
def check(s):
arr = []
for c in s:
if c in SYMBOLS_L:
# 左符号入栈
arr.append(c)
elif c in SYMBOLS_R:
# 右符号要么出栈,要么匹配失败
if arr and arr[-1] == SYMBOLS[c]:
arr.pop()
else:
return False
return not arr
- 检测括号匹配
print(check("3 * {3 +[(2 -3) * (4+5)]}"))
print(check("3 * {3+ [4 - 6}]"))
以上就是Python实现括号匹配的主要步骤,可以根据实际情况进行调整,以达到你需要的效果。
(创建数组) NumPy 创建数组最常用的3种方式 创建 NumPy 数组的三种方式 全网首发(图文详解1)
(pandas 排序) 按两列或多列对Pandas数据框架进行排序 在Pandas中按两列或多列排序 全网首发(图文详解1)