设计一个match python
时间: 2023-06-05 10:04:41 浏览: 46
函数,匹配字符串中的括号是否合法?
好的,让我先理解问题。您想要一个 Python 函数,可以判断一个字符串中的括号是否是合法的咯。没问题,我也很喜欢写代码。所以,让我们一起来编写这个函数吧!
这个函数的实现思路应该是遍历字符串中的每个字符,并维护一个栈。如果当前字符是左括号,则将其压入栈中;如果当前字符是右括号,则将栈顶元素取出,判断是否与当前字符匹配。如果匹配,则继续遍历字符串;如果不匹配,则返回 False,表示括号不合法。最后如果栈不为空,则表示有左括号没有匹配,返回 False;反之,返回 True,表示括号是合法的。
下面是代码实现:
```python
def match_parenthesis(s):
stack = []
for c in s:
if c == '(' or c == '[' or c == '{':
stack.append(c)
elif c == ')' and (not stack or stack[-1] != '('):
return False
elif c == ']' and (not stack or stack[-1] != '['):
return False
elif c == '}' and (not stack or stack[-1] != '{'):
return False
else:
stack.pop()
return not stack
```
这个函数可以处理包含小括号、中括号和大括号的字符串。它的时间复杂度是 O(n),其中 n 是字符串的长度,因为我们需要遍历整个字符串,并对每个字符进行操作。如果字符串中的括号是合法的,那么我们只需要遍历一遍字符串即可;如果括号是不合法的,那么我们最多需要遍历整个字符串和栈的长度两倍的次数。