python算法-----栈

      栈又称之为堆栈是一个特殊的有序表,其插入和删除操作都在栈顶进行操作,并且按照先进后出,后进先出的规则进行运作。

在这里插入图片描述

一般栈的数据接口:
在这里插入图片描述

在Python中,列表就类似是一个栈,提供接口如下
在这里插入图片描述

括号匹配

            假如表达式中允许包含三个中括号()、{}、[],其嵌套顺序是任意的,例如:
            正确的格式:
            {()[()]},[{({})}]
            错误的格式:
            [(]),[()),(()}
            编写一个函数,判断一个表达式字符串,括号匹配是否正确
思路:
      1、定义两个数组LEFT和RIGHT,LEFT里面是左括号,RIGHT是右括号,两个括号的内容是对应的。
      2、在函数中定义stack数组,循环判断的表达式,若其是左括号里面的,则进栈,若其是右括号里面的内容,则先找到其在右括号里对应的索引,然后根据索引找到左括号里面的内容。
      3、判断stack末尾和找到的左括号里面的内容是否相等,若相等,则出栈,若不相等,则直接退出。
      4、循环结束后,判断stack里面是否为空,若为空,则输出匹配,否则就是不匹配。

    # _*_ coding:utf-8 _*_
    LEFT = ['(', '[', '{'] # 左括号
    RIGHT = [')', ']', '}'] # 右括号
    
    def match(expr):
        stack = []
        for item in expr:
            if item in LEFT:
                stack.append(item)
            elif item in RIGHT:
                a = RIGHT.index(item)
                if stack[-1] == LEFT[a]:
                    stack.pop(-1)
                else:
                   return print("不匹配")
    
        if len(stack) !=0:
            print('不匹配')
        else:
            print('匹配')
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值