请编写程序判断一个包含“(”和“)”的括号序列是否匹配,如匹配则输出Match,否则输出noMatch
时间: 2024-10-18 11:22:53 浏览: 31
为了判断一个包含“(”和“)”的括号序列是否匹配,我们可以采用栈数据结构来辅助分析。栈是一种后进先出(LIFO)的数据结构,在遍历括号序列的过程中,每当遇到左括号“(”,我们就将其压入栈;当遇到右括号“)”时,检查栈顶元素是否为对应的左括号,如果匹配,则弹出栈顶元素,如果不匹配或者栈已空,则说明序列不匹配。
下面是一个简单的 Python 示例:
```python
def is_brackets_matched(s):
stack = []
opening_brackets = ['(', '[', '{']
closing_brackets = [')', ']', '}']
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 "noMatch"
return "Match" if not stack else "noMatch"
# 测试示例
print(is_brackets_matched("()[]{}")) # 输出 Match
print(is_brackets_matched("([)]")) # 输出 noMatch
```
在这个程序中,我们首先初始化两个列表 `opening_brackets` 和 `closing_brackets`,然后遍历输入字符串 `s` 的每个字符。如果遇到左括号,就添加到栈里;如果遇到右括号,我们尝试从栈中取出相应的左括号并比较它们是否匹配。如果不匹配或者栈为空(表示缺少左括号),就返回 "noMatch"。最后,如果遍历完所有字符栈为空,说明所有的括号都匹配了,返回 "Match"。否则,仍然有未匹配的括号,也返回 "noMatch"。
阅读全文