zoukankan      html  css  js  c++  java
  • 栈Stack

    class Stack:
        def __init__(self):
            self.items=[]
        def isEmpty(self):
            return self.items==[]
        def push(self,item):
            #添加元素进站
            self.items.append(item)
        def peek(self):
            #打印栈顶元素
            return self.items[len(self.items)-1]
        def pop(self):
            #从栈顶取出元素
            return self.items.pop()
        def size(self):
            #返回栈中元素的个数
            return len(self.items)

    栈的另一种实现是把列表的首端(index=0)作为栈顶一样可以实现Stack

    class Stack:
        def __init__(self):
            self.items=[]
        def isEmpty(self):
            return self.items==[]
        def push(self,item):
            #添加元素进站
            self.items.insert(0,item)
        def peek(self):
            #打印栈顶元素
            return self.items[0]
        def pop(self):
            #从栈顶取出元素
            return self.items.pop(0)
        def size(self):
            #返回栈中元素的个数
            return len(self.items)

    def parChecker(symbolString):
        #单一括号匹配函数
        s=Stack()
        balanced=True
        index=0
        #判断索引值和字符串的大小 ,当前是否匹配
        while index<len(symbolString) and balanced:
            symbol=symbolString[index]
            if symbol =="(":
                s.push(symbol)
            else:
                if s.isEmpty():
                    balanced=False
                else:
                    s.pop()
            index=index+1
        if balanced and s.isEmpty():
            return True
        else:
            return False

    print(parChecker("(()))"))

    def TYparChecker(symbolString):
        #多种类型括号匹配方法
        s=Stack()
        balanced=True
        index=0
        while index<len(symbolString) and balanced:
            symbol=symbolString[index]
            if symbol in '([{':
                s.push(symbol)
            else:
                if s.isEmpty():
                    balanced= False
                else:
                    top=s.pop()
                    if not matchs(top,symbol):
                        balanced=False
            index=index+1
        if balanced and s.isEmpty():
            return True
        else:
            return False
    
    def matchs(open,close):
        opens='([{'
        closers=')]}'
        return opens.index(open)==closers.index(close)

    print(TYparChecker("{{[()]}"))
  • 相关阅读:
    服务器迁移总结
    使用OpenSSL生成证书
    mysql Event、存储过程、表命令
    负载均衡 > 常见问题
    SpringMVC记住密码功能
    spring mvc +cookie+拦截器功能 实现系统自动登陆
    android studio之argument for @notnull parameter 'name'
    jQuery ajax表单提交实现局部刷新
    Spring MVC 中采用注解方式 Action中跳转到另一个Action的写法
    ajax表单提交全路径
  • 原文地址:https://www.cnblogs.com/jzxs/p/11090280.html
Copyright © 2011-2022 走看看