基于链栈的括号匹配代码
时间: 2024-10-11 07:15:28 浏览: 37
基于链栈的括号匹配算法通常用于检查字符串中的括号是否有效配对,如 "()"、"[]" 和 "{}" 等。这种算法利用了栈的数据结构特性,当遇到左括号时压入栈,遇到右括号时判断栈顶元素是否为对应的左括号。以下是基本步骤:
1. 初始化一个空栈。
2. 遍历输入字符串中的每个字符,如果是左括号('('、'[' 或 '{'),将其压入栈。
3. 如果是右括号(')'、']' 或 '}'),检查栈顶元素是否为相应的左括号。如果是,则弹出栈顶元素;如果不是或栈为空,说明括号不匹配,返回 false。
4. 遍历结束后,如果栈非空,说明存在未匹配的左括号,返回 false。如果栈为空,表示所有括号都已正确匹配,返回 true。
这是一个简单的实现思路,使用链表作为栈可以方便地进行插入和删除操作。下面是伪代码示例:
```python
def is_valid(s):
stack = []
pairs = {")": "(", "]": "[", "}": "{"}
for char in s:
if char in pairs.values(): # 遇到左括号,压入栈
stack.append(char)
elif char in pairs.keys(): # 遇到右括号,检查栈顶是否匹配
if not stack or stack.pop() != pairs[char]:
return False
return len(stack) == 0 # 检查栈是否为空
# 示例
print(is_valid("([])") # 输出: True
print(is_valid("({[})")) # 输出: False
```
阅读全文