符号匹配pta青岛大学
时间: 2025-02-02 16:20:20 浏览: 37
### 符号匹配 PTA 青岛大学 课程作业或考试题解
对于符号匹配问题,在处理C语言源程序中的括号匹配时,可以采用栈结构来实现。每当遇到左括号`(`、`[`、`{`时将其压入栈中;而当遇到右括号`)`、`]`、`}`时,则尝试弹出栈顶元素并检查两者是否构成一对合法的配对[^2]。
下面是一个简单的Python版本解决方案:
```python
def check_parentheses_balance(code_snippet):
stack = []
pairs = {')': '(', ']': '[', '}': '{'}
for char in code_snippet:
if char in "([{":
stack.append(char)
elif char in ")]}":
if not stack or stack.pop() != pairs[char]:
return False
return len(stack) == 0
```
此函数接收一段代码片段作为参数,并返回布尔值表示该段代码内的括号是否平衡。如果遍历结束后栈为空,则说明所有的括号都成功找到了对应的另一半,即达到了平衡状态;反之则存在未闭合的括号。
为了适应题目要求——读取多行输入直到单独的一行`.`为止,可以在上述基础上稍作修改以支持逐行读取和判断:
```python
import sys
pairs = {'(': ')', '[': ']', '{': '}'}
stack = []
for line in sys.stdin:
stripped_line = line.strip()
if stripped_line == '.':
break
for char in stripped_line:
if char in pairs.keys():
stack.append(pairs[char])
elif char in pairs.values():
if not stack or char != stack.pop():
print("No")
exit()
if stack:
print("No")
else:
print("Yes")
```
这段改进后的代码能够按照给定规则持续接受标准输入直至遇见终止符`.`, 并在最后输出整个序列是否保持了正确的括号匹配关系。
阅读全文
相关推荐


















