无名阁,只为技术而生。流水不争先,争的是滔滔不绝。

(括号匹配) Python实现括号匹配方法详解 使用栈实现括号匹配 全网首发(图文详解1)

前沿技术 Micheal 7个月前 (06-06) 85次浏览 已收录 扫描二维码

(括号匹配) 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)

喜欢 (0)
[]
分享 (0)
关于作者:
流水不争先,争的是滔滔不绝