第1关:使用堆栈实现括号的匹配(源代码)
时间: 2024-12-15 07:13:48 浏览: 1
第一关通常是在计算机科学教育中教授数据结构和算法的一部分,其中涉及使用堆栈(Stack)来检查给定字符串中的括号是否有效配对。堆栈是一种后进先出(LIFO)的数据结构,非常适合用于这个任务,因为当遇到左括号时我们将其推入堆栈,遇到右括号时检查堆栈顶部的左括号是否匹配。
以下是一个简单的Python示例,实现了括号匹配的函数:
```python
def is_valid(s):
stack = []
mapping = {")": "(", "}": "{", "]": "["}
for char in s:
if char in mapping:
top_element = stack.pop() if stack else '#'
if top_element != mapping[char]:
return False
else:
stack.append(char)
# 如果堆栈为空,说明所有括号都已配对
return not stack
# 测试例子
print(is_valid("()")) # 输出: True
print(is_valid("({[]})")) # 输出: True
print(is_valid("([)]")) # 输出: False
```
在这个代码中,`is_valid` 函数遍历输入字符串`s`中的每个字符。如果遇到右括号,它会从堆栈弹出最近的左括号并与之比较是否匹配;如果不匹配,则返回False。对于其他非括号字符,直接压入堆栈。最后,如果堆栈为空,说明所有的括号都成对出现了,函数返回True,否则返回False。
阅读全文