zoukankan      html  css  js  c++  java
  • 括号匹配

    问题

    假设表达式中允许包含3种括号()[]{},其嵌套顺序是是正确的。
    编写一个函数,判断一个表达式字符串,括号匹配是否正确

    例如:
    {()[()]}这样的格式是正确的,
    [{),[()),(()}这样的格式不正确

    Python代码示例

    # !/usr/bin/env python
    # -*-encoding: utf-8-*-
    # author:LiYanwei
    # version:0.1
    
    
    # 表示左括号和用括号
    left = ['(','[','{']
    right = [')',']','}']
    
    def match(expr):
        '''
        括号的匹配算法:
        遍历传入表达式的每个字符,如果是左括号压入栈中,如果是右括号时,判断栈是否为空,为空说明False,不为空判断是否匹配,不匹配False,匹配True
        :param expr:表达式
        :return:返回
        '''
        # 1.建立一个空栈,用来保存还未找到匹配的做括号
        s = []
        # 2.遍历表达式中的每个字符
        for c in expr:
            # 如果是左括号,入栈
            if c in left:
                s.append(c)
            # 如果右括号包含两种情况
            elif c in right:
                # 栈为空,则表达式错误,返回False
                if not s:
                    return False
                # 如果栈不为空,判断c和栈定元素是否匹配(通过Assic码的差值判断,不再1到2之间的,表达式错误,返回False)
                if not 1 < ord(c) - ord(s[-1]) <= 2:
                    return False
                # 最后一种情况匹配,清除所有元素
                s.pop()
                return True
    
    print match('{[]})')
    
    
    
  • 相关阅读:
    telegraf、influxDB、Grafana的安装与基本使用
    influxdb简单使用
    keepalived 配置文件参数详解
    haproxy acl访问限制IP
    Linux ------清除内存中的cache
    Linux释放内存空间
    火狐添加消息头 Modify Header Value (HTTP Headers)
    maven 安装jar包
    获取mapper
    root of factory hierarchy
  • 原文地址:https://www.cnblogs.com/Py00/p/7697500.html
Copyright © 2011-2022 走看看