加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

借助Python的栈实现括号匹配算法

发布时间:2021-11-09 10:11:37 所属栏目:PHP教程 来源:互联网
导读:利用Python列表实现一个栈的结构,再使用栈实现括号匹配的算法,所谓的括号匹配是指在编程语言中,括号是成对出现的,最先出现的左括号,对应于最后的右括号,后出现的左括号对应于最新右括号,符合栈的特征 写一个栈的类:stack.py class Stack: def __init

利用Python列表实现一个栈的结构,再使用栈实现括号匹配的算法,所谓的括号匹配是指在编程语言中,括号是成对出现的,最先出现的左括号,对应于最后的右括号,后出现的左括号对应于最新右括号,符合栈的特征
写一个栈的类:stack.py
 
class Stack:
    def __init__(self):
        self.items = []
 
    def is_Empty(self):
        return self.items == []
 
    def push(self, item):
        self.items.append(item)
 
    def pop(self):
        return self.items.pop()
 
    def peek(self):
        return self.items[len(items)-1]
    def size(self):
        return len(self.items)
实现括号匹配的算法程序:
 
from stack import Stack
def parChecker(symbolString):
    s = Stack()
    balanced = True
    index = 0
    while index < len(symbolString) and balanced:
        symbol = symbolString[index]
        if symbol == "(":
            s.push(symbol)
        elif symbol == ")":
            if s.is_Empty():
                balanced = False
            else:
                s.pop()
 
        index += 1
    if balanced and s.is_Empty():
        return True
    else:
        return False
 
print(parChecker("(((2356)))"))
输出结果:
True
再测试
 
print(parChecker("(()))"))
输出结果False
 
扩展
能够匹配多种括号,{},[]
只需要小小的改动代码:
 
from stack import Stack
 
def parChecker(symbolString):
    s = Stack()
    balanced = True
    index = 0
    while index < len(symbolString) and balanced:
        symbol = symbolString[index]
        if symbol in "({[":
            s.push(symbol)
        elif symbol in ")}]":
            if s.is_Empty():
                balanced = False
            else:
                s.pop()
 
        index += 1
    if balanced and s.is_Empty():
        return True
    else:
        return False
 
print(parChecker("[(({fdf}))]"))

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读