括号序列

题目

给出一个仅包含字符'(',')','{','}','['和']',的字符串,判断给出的字符串是否是合法的括号序列
括号必须以正确的顺序关闭,"()"和"()[]{}"都是合法的括号序列,但"(]"和"([)]"不合法。

eg:

输入"["

输出 False

输入“{}”

输出 True

分析

  1. 定义一个栈,列表就行,用来接收或者比较 S 的每个字符。
  2. 首先进行判断,如果栈为空,直接 append,否则的话进行判断,如果和前一个字符相等,直接添加,因为相等的字符肯定不是括号序列,然后依次进行判断每个字符和栈顶字符是否是一对,如果是就弹出栈顶。

实现代码:

复制代码
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
class Solution:
    def isValid(self, s):
        valid_list = []
        for valid in s:
            if len(valid_list) == 0:
                valid_list.append(valid)
            elif valid_list[-1]==valid:
                valid_list.append(valid)
            else:
                if valid =="}" and valid_list[-1]=="{":
                    valid_list.pop()
                elif valid =="]" and valid_list[-1]=="[":
                    valid_list.pop()
                elif valid ==")" and valid_list[-1]=="(":
                    valid_list.pop()
        return False if len(valid_list) else True

if __name__ == "__main__":
    s = Solution()
    result = s.isValid("[(){}]")
    print(result)
复制代码

 

posted @   不能说的秘密  阅读(218)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示