括号匹配算法

括号匹配算法用于检查一个字符串中的括号是否正确匹配,确保每个开括号都有相应的闭括号,并且它们的顺序是正确的。

例如

()

(()()())

上面这些都是正确的括号匹配

是栈这种数据结构的应用场景之一

复制代码
class Stack:
    def __init__(self):
        self.items = []

    def isEmpty(self):
        return len(self.items) == 0
        
    def push(self,item):
        self.items.append(item)
    
    def pop(self):
        return self.items.pop()

    def peek(self):
        return self.items[len(self.items) - 1]
    
    def size(self):
        return len(self.items)

实现这个算法需要使用栈这种数据结构,当然其实数组也是可以的。不过一般来说,这是最能体现栈这种数据结构特点的应用场景

具体实现

python 复制代码
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
相关推荐
czlczl200209259 分钟前
JVM创建对象过程
java·开发语言
qq_4160187219 分钟前
分布式缓存一致性
开发语言·c++·算法
SuperEugene23 分钟前
Vue Router 实战规范:path/name/meta 配置 + 动态 / 嵌套路由,统一团队标准|状态管理与路由规范篇
开发语言·前端·javascript·vue.js·前端框架
干啥啥不行,秃头第一名27 分钟前
STL容器内部实现剖析
开发语言·c++·算法
敏编程30 分钟前
一天一个Python库:tomlkit - 轻松解析和操作TOML配置
python
2401_8318249634 分钟前
内存泄漏检测与防范
开发语言·c++·算法
2401_8796938735 分钟前
使用Python进行图像识别:CNN卷积神经网络实战
jvm·数据库·python
yunyun3212342 分钟前
机器学习模型部署:将模型转化为Web API
jvm·数据库·python
includei1 小时前
【JavaScript】华为机试_HJ20_密码验证合格程序
开发语言·javascript·华为
肖恭伟1 小时前
Cursor Superpowers 零基础开发 Qt 界面
开发语言·qt