定义一个类判断给定字符串中的括号(包括“<>”、“()”、“[ ]”、“{ }”四种类型的括号)是否正确配对。例如:"()adafd{)}" 是错误配对,输出False;"()adafd{(<>)}" 是正确配对,输出True;"{[({})]}"是正确配对,输出True。
时间: 2024-04-29 18:25:47 浏览: 96
下面是Python代码实现:
```python
class BracketMatch:
def __init__(self, s):
self.s = s
def is_match(self):
stack = []
mapping = {")": "(", "}": "{", "]": "[", ">": "<"}
for c in self.s:
if c in mapping.values():
stack.append(c)
elif c in mapping.keys():
if not stack or mapping[c] != stack.pop():
return False
return not stack
```
代码解释:
1. 首先定义一个类`BracketMatch`,初始化函数`__init__`接收一个字符串`s`作为参数。
2. 定义一个栈`stack`,用来存储左括号。
3. 定义一个字典`mapping`,用来表示左右括号的对应关系。
4. 遍历字符串`s`,如果当前字符为左括号,则将其入栈;如果当前字符为右括号,则判断栈顶元素是否与其匹配,若匹配则将栈顶元素出栈,否则返回False。
5. 若遍历结束后栈为空,则表示括号配对成功,返回True;否则返回False。
使用示例:
```python
s1 = "()adafd{)}"
s2 = "()adafd{(<>)}"
s3 = "{[({})]}"
bm1 = BracketMatch(s1)
bm2 = BracketMatch(s2)
bm3 = BracketMatch(s3)
print(bm1.is_match()) # False
print(bm2.is_match()) # True
print(bm3.is_match()) # True
```
阅读全文