📌  相关文章
📜  检查括号深度在给定的字符串中是否正确(1)

📅  最后修改于: 2023-12-03 14:55:46.468000             🧑  作者: Mango

检查括号深度在给定的字符串中是否正确

在编写程序时,我们常常需要检查括号深度是否正确。比如在编写算术表达式求值、JSON解析等程序中,括号深度的正确性就是非常重要的。本文将介绍如何检查括号深度在给定的字符串中是否正确。

算法思路

我们可以使用栈来检查括号深度的正确性。当遇到左括号时,将其入栈;当遇到右括号时,将栈顶的左括号出栈。最后检查栈是否为空,若为空,则说明括号深度正确;否则,说明存在不匹配的右括号。

具体步骤如下:

  1. 创建一个空栈,用于存储左括号;
  2. 枚举字符串中的每一个字符;
  3. 如果当前字符是左括号,则将其入栈;
  4. 如果当前字符是右括号,则检查栈顶是否是与之匹配的左括号,如果匹配,则将栈顶的左括号出栈,否则说明括号深度不正确;
  5. 枚举完所有字符后,如果栈为空,则说明括号深度正确;否则说明存在不匹配的右括号。
代码实现

代码实现如下:

def is_valid_parentheses(s: str) -> bool:
    stack = []
    mapping = {
        ')': '(',
        '}': '{',
        ']': '[',
    }
    for char in s:
        if char in mapping:
            if not stack or stack[-1] != mapping[char]:
                return False
            stack.pop()
        else:
            stack.append(char)
    return not stack

这段代码使用了一个映射表 mapping,用于用右括号查找对应的左括号。当读到左括号时,直接入栈;当读到右括号时,检查栈顶元素是否是对应的左括号,如果是,则弹出栈顶元素;否则,说明括号深度不正确。最后,如果栈为空,则说明括号深度正确;否则说明存在不匹配的右括号。

总结

本文介绍了如何使用栈检查括号深度在给定的字符串中是否正确。这是一种简单、易懂的算法,适用于很多场景。在实际编程中,我们可以根据具体需求对其进行修改和优化,以便更好地满足业务需求。