设计一个算法,实现输入一字符串并检查字符串中是否含有圆括号,当圆括号匹配时输出括号内的字符串,否则给出出错信息(提示:利用栈记录左括号出现后的字符)
时间: 2024-03-17 19:44:35 浏览: 133
好的,下面是实现该算法的 Python 代码:
```python
def check_parentheses(s):
stack = []
left_parentheses = ['(', '[', '{']
right_parentheses = [')', ']', '}']
pair_parentheses = dict(zip(right_parentheses, left_parentheses))
for i, c in enumerate(s):
if c in left_parentheses:
stack.append(i)
elif c in right_parentheses:
if len(stack) == 0:
return "Error: Unmatched right parentheses at index " + str(i)
else:
left_idx = stack.pop()
if pair_parentheses[c] != s[left_idx]:
return "Error: Unmatched parentheses at index " + str(left_idx)
else:
return s[left_idx+1:i]
if len(stack) > 0:
return "Error: Unmatched left parentheses at index " + str(stack.pop())
else:
return "No parentheses found in the string."
```
该算法使用了栈来存储左括号出现后的字符,并通过字典来记录右括号与对应的左括号,从而判断括号是否匹配。当发现右括号时,先检查栈是否为空,如果为空则说明出现了未匹配的右括号,如果栈不为空,则弹出栈顶元素,判断其是否与当前右括号匹配,如果匹配,则返回括号内的字符串。如果循环结束后栈中还有元素,则说明存在未匹配的左括号。
阅读全文