)有一括号字符串,需要检测该字符串中的括号是不是正确匹配的, 如{([{}])}这样的括号字符串就是正确匹配的。若存在不能匹配的括号,则将 这些括号字符删去。最后输出正确的括号字符串。
时间: 2023-05-14 10:06:36 浏览: 63
可以使用栈来解决这个问题。遍历字符串,遇到左括号则入栈,遇到右括号则判断栈顶元素是否与之匹配,若匹配则弹出栈顶元素,否则将该右括号删除。最后输出栈中剩余的元素即为正确的括号字符串。
以下是示例代码:
```python
def match_parentheses(s):
stack = []
for c in s:
if c in "([{":
stack.append(c)
elif c in ")]}":
if not stack:
s = s.replace(c, "")
elif c == ")" and stack[-1] == "(":
stack.pop()
elif c == "]" and stack[-1] == "[":
stack.pop()
elif c == "}" and stack[-1] == "{":
stack.pop()
else:
s = s.replace(c, "")
return "".join(stack)
s = "{([{}])}"
print(match_parentheses(s)) # 输出 "{([{}])}"
s = "{[()]}["
print(match_parentheses(s)) # 输出 "{[]}"
```
注意,这里使用了字符串的 `replace` 方法来删除不能匹配的括号字符。这种方法虽然简单,但是效率较低,因为每次删除操作都需要重新构建字符串。实际应用中,可以使用列表来存储字符串,然后在遍历完字符串后再将列表转换为字符串输出。
阅读全文