用栈实现括号匹配
时间: 2023-11-06 19:15:13 浏览: 85
好的,下面是使用栈实现括号匹配的示例代码(使用 Python 语言):
```python
def parentheses_match(s):
"""
括号匹配函数
:param s: 包含括号的字符串
:return: True/False 表示是否匹配
"""
stack = [] # 用列表模拟栈
for c in s:
if c in "([{":
stack.append(c) # 如果是左括号,入栈
elif c in ")]}":
if not stack: # 如果栈为空,说明缺少左括号,匹配失败
return False
top = stack.pop() # 弹出栈顶元素
if top == "(" and c != ")": # 如果左右括号不匹配,匹配失败
return False
elif top == "[" and c != "]":
return False
elif top == "{" and c != "}":
return False
return not stack # 如果栈为空,说明匹配成功;否则匹配失败
```
使用栈实现括号匹配的思路是,遍历字符串中的每个字符,如果是左括号,则将其入栈;如果是右括号,则弹出栈顶元素,并判断左右括号是否匹配。如果匹配,则继续遍历;如果不匹配,则匹配失败。最后,如果栈为空,说明匹配成功;否则匹配失败。
这个算法的时间复杂度是 $O(n)$,其中 $n$ 是字符串的长度。因为算法只需要遍历一次字符串,并且每次操作栈的时间复杂度是 $O(1)$。
阅读全文