使用栈实现括号匹配的检查(编写一个函数,接收一个字符串检查其中的括号是否匹配。支持的括号类型(),【】,{}。返回布尔值,表示括号是否匹配。))
时间: 2024-09-30 17:10:02 浏览: 25
C++中用栈来判断括号字符串匹配问题的实现方法
使用栈来检查括号匹配是一种常见的算法问题,通常通过迭代遍历输入字符串,并利用栈的数据结构特性来辅助判断。以下是基本的步骤:
1. 创建一个空栈,用于存储遇到的左括号。
2. 遍历输入字符串,对于每个字符:
- 如果它是一个左括号(如'('、'['或'{'),将其压入栈中。
- 如果它是右括号(如')'、']'或'}'):
- 检查栈顶元素是否对应当前的左括号(例如,'()'对,'('错;'{'与'}'对,'['与']'对)。
- 如果对应,则将栈顶元素弹出;如果不对应,说明括号不匹配,直接返回`false`。
3. 遍历结束后,如果栈为空,意味着所有左括号都有对应的右括号,返回`true`;否则,返回`false`,因为还有未配对的左括号。
这是一个基础的伪代码示例:
```python
def is_bracket_matched(s):
stack = []
pairs = {')': '(', ']': '[', '}': '{'}
for char in s:
if char in pairs:
# 检查栈顶元素是否需要关闭当前的右括号
if not stack or stack[-1] != pairs[char]:
return False
else:
stack.pop() # 匹配成功,移除栈顶元素
else:
stack.append(char) # 非右括号,继续添加到栈
return len(stack) == 0 # 所有左括号都已处理,检查栈是否为空
# 示例:
s = "()[]{}"
print(is_bracket_matched(s)) # 输出:True
s = "({[})"
print(is_bracket_matched(s)) # 输出:False
```
阅读全文