设计一个算法,实现输入一字符串并检查字符串中是否含有圆括号,当圆括号匹配时输出括号内的字符串,否则给出出错信息(提示:利用栈记录左括号出现后的字符)
时间: 2024-02-16 21:04:47 浏览: 60
好的,我可以帮你设计这个算法。
思路如下:
1. 遍历字符串中的每一个字符,如果是左括号 "(" 则将其压入栈中。
2. 如果是右括号 ")",则需要检查栈顶是否为左括号,如果不是则说明括号不匹配,输出错误信息;如果是左括号,则弹出栈顶元素。
3. 当遍历完整个字符串后,如果栈为空,则说明括号匹配,否则输出错误信息。
4. 如果括号匹配,可以利用栈记录左括号出现后的字符。
下面是 Python 代码实现:
```python
def check_parenthesis(s):
stack = []
for i in range(len(s)):
if s[i] == '(':
stack.append(i)
elif s[i] == ')':
if not stack:
return "Error: Unmatched parenthesis"
else:
left = stack.pop()
if len(stack) == 0:
print(s[left+1:i])
if stack:
return "Error: Unmatched parenthesis"
else:
return "Parenthesis matched"
```
其中 `stack` 是一个列表,用来存储左括号的下标。遍历字符串 `s` 中的每一个字符,如果是左括号则将其下标压入栈中,如果是右括号则弹出栈顶元素,检查是否为左括号,并记录括号内的字符串。遍历完字符串后,如果栈为空则说明括号匹配,否则输出错误信息。
阅读全文