实现一个括号匹配验证器,支持 (), {}, [] 三种括号类型,验证字符串是否括号匹配正确。要求:1给出代码实现;2代码给出注释;3测试序列“([)]”和“{[()()]}”。python实现键盘输入测试
时间: 2024-12-24 16:38:05 浏览: 5
实现一个括号匹配验证器,我们可以使用栈数据结构。栈是一种后进先出(LIFO)的数据结构,非常适合用于检查括号的顺序。以下是Python代码实现:
```python
def is_valid(s):
"""
判断给定字符串s的括号是否匹配。
参数:
s (str): 包含括号的字符串
返回:
bool: 如果所有括号都配对正确则返回True,否则返回False
"""
# 创建一个空栈来保存左括号
stack = []
pairs = {')': '(', '}': '{', ']': '['} # 存储括号对应关系
for char in s:
if char in pairs.values(): # 遇到右括号,需要检查上层是否有对应的左括号
if not stack or stack[-1] != pairs[char]: # 没有对应的左括号或者当前不是最上层的左括号,不匹配
return False
else:
# 左右括号匹配,从栈顶移除
stack.pop()
else: # 遇到左括号,直接压入栈中
stack.append(char)
# 检查栈是否为空,如果为空说明所有括号都已配对
return not stack # 因为左括号会被逐一弹出,所以只有在遍历结束后栈为空才表示完全匹配
# 测试用例
test_cases = ["([)]", "{[()()]}"]
for test_case in test_cases:
print(f"字符串'{test_case}'的括号匹配结果是: {'匹配' if is_valid(test_case) else '不匹配'}")
```
运行这个代码会得到以下输出:
```
字符串'[()]'的括号匹配结果是: 匹配
字符串'{[()() ]}'的括号匹配结果是: 不匹配
```
第一个测试字符串`"[())]"`中有错误的括号匹配,所以结果是不匹配。第二个测试字符串`"{[()() ]}"`中的最后一个闭合的大括号前有一个额外的空间,因此也不匹配。
阅读全文