python给定仅包含“()[]{}”六种括号的字符串,请你判断该字符串中,括号的匹配是否是合法的,也就是对应括号的数量、嵌套顺序完全正确。 输入格式: 第一行一个整数T(T<=10) 其后T行每行一个字符串只包含[{()}]六种字符(字符串长度2e5以内) 输出格式: 对于每个字符串,匹配输出Yes,否则输出No
时间: 2024-03-01 08:55:50 浏览: 87
好的,这是一段 Python 代码实现,可以解决该问题:
```python
T = int(input())
for _ in range(T):
s = input().strip()
stack = []
for c in s:
if c in '([{':
stack.append(c)
else:
if not stack:
print('No')
break
if c == ')' and stack[-1] == '(':
stack.pop()
elif c == ']' and stack[-1] == '[':
stack.pop()
elif c == '}' and stack[-1] == '{':
stack.pop()
else:
print('No')
break
else:
if not stack:
print('Yes')
else:
print('No')
```
代码中,我们先读入一个整数 T 表示测试数据的组数,然后对于每组测试数据,我们读入一个字符串 s,然后遍历字符串中的每一个字符,如果字符是左括号,则将其入栈;如果是右括号,则判断栈顶的左括号是否与之匹配,如果匹配则将栈顶元素出栈,否则输出 No 并退出循环。最后,如果栈为空,则输出 Yes,否则输出 No。
阅读全文