二. 栈2 使括号匹配

Idea:
这道题让我想起了那道最基础的括号匹配问题,此题实际上就是在问,是否能够找到一次位置交换,使得整个string是一个合法的括号匹配。

def bracket(string):
    stack = []
    position_1 = []
    length = len(string)
    i = 0
    while i < length:
        # 每一个括号的位置来源
        position_1.append(i+1)
        # 将括号加入栈
        stack.append(string[0])
        # 在原string里去除被加入栈的括号
        string = string[1:]
        # 表示又处理了一个括号
        i += 1

        value = True
        while value and string:
            if stack[-1] == "(" and string[0] == ")":
                # 在原string里去除被加入已匹配的括号
                string = string[1:]
                # 该括号出栈
                stack.pop()
                # 对应位置出栈
                position_1.pop()
                # 表示又处理了一个括号
                i += 1
                if not stack or not string:
                    value = False
            else:
                value = False

    if len(position_1) ==2 and stack[0] != stack[1]:
        return True
    else:
        return False
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 9,956评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,798评论 19 139
  • 一、Java 简介 Java是由Sun Microsystems公司于1995年5月推出的Java面向对象程序设计...
    子非鱼_t_阅读 9,817评论 1 44
  • 最近工作并不忙,只是氛围有点压抑,加上生活的奔波,我已经忘记有多久没有静下心来审视自己了。其实我得感谢女儿曦曦,她...
    小楼_11b1阅读 1,579评论 0 0
  • Anaven阅读 1,683评论 0 0