1、在设计性实验1)中如果要求在不匹配的括号下方标注一个问号,应如何做?写出代码。 例如:有字符串”(hh)({ww}]” 要求输出: 原字符串:(hh)({ww}] 错误位置: ? ?
时间: 2024-10-16 20:12:12 浏览: 20
数据结构实验代码括号匹配的检验.rar
在设计性实验中,你可以通过遍历输入字符串并检查括号是否匹配来找出错误的位置。这里是一个简单的Python代码示例:
```python
def find_unmatched_parens(input_string):
stack = []
unmatched_positions = []
for i, char in enumerate(input_string):
if char in "([{":
stack.append(char)
elif char in ")]}":
if not stack or char != stack.pop():
unmatched_positions.append((i,))
else:
# 如果是正确的闭合,跳过
pass
# 如果栈非空,则还有未关闭的左括号
if stack:
unmatched_positions.extend(range(len(stack), len(input_string), 1))
return input_string, [f" {pos+1}?" for pos in unmatched_positions]
input_str = "(hh)({ww}]"
result, error_positions = find_unmatched_parens(input_str)
correct_output = f"原字符串:{result}\n错误位置:{' '.join(error_positions)}"
print(correct_output)
```
这个函数首先创建一个堆栈来存储遇到的左括号,当遇到右括号时,它会尝试从堆栈中弹出相应的左括号。如果堆栈为空或者弹出的不是对应的括号,就将当前位置添加到`unmatched_positions`列表中。最后返回原字符串及错误位置的标记。
阅读全文