设将整数1、2、3、4依次进栈,但只要出栈时栈非空,则可将出栈操作按任何次序夹入其中,请写出检验括号匹配的算法,把完整代码给我。
时间: 2024-10-24 13:12:44 浏览: 14
Java定义栈结构,并实现入栈、出栈操作完整示例
这是一个经典的利用栈数据结构解决的问题,通常被称为括号匹配算法,也称为括号验证或平衡检查。这里提供一种基于栈的简单Python算法:
```python
def is_balanced(s):
opening_brackets = ['(', '[', '{']
closing_brackets = [')', ']', '}']
stack = []
for char in s:
if char in opening_brackets:
stack.append(char)
elif char in closing_brackets:
if not stack or closing_brackets.index(char) != opening_brackets.index(stack.pop()):
return False
# 如果还有剩余的元素在栈里,说明缺少对应的闭合括号
return len(stack) == 0
# 测试示例
test_cases = ["()[]{}", "({[()]})", "([)]", "({{))}"]
for case in test_cases:
print(f"字符串 '{case}' 是否平衡? {is_balanced(case)}")
阅读全文