数据结构括号匹配检验
时间: 2023-11-20 08:52:04 浏览: 148
数据结构中的括号匹配检验是指检查一个字符串中的括号是否匹配。在这个问题中,我们需要检查字符串中的每个左括号是否都有一个相应的右括号与之匹配。如果所有的左括号都有相应的右括号与之匹配,那么这个字符串就是合法的,否则就是非法的。
实现这个算法的一种常见方法是使用栈。我们可以遍历字符串中的每个字符,如果遇到左括号,就将其压入栈中;如果遇到右括号,就将栈顶元素弹出,并检查它是否与当前右括号匹配。如果栈为空或者栈顶元素与当前右括号不匹配,那么这个字符串就是非法的。
下面是一个简单的伪代码实现:
```
function is_valid(s: string) -> bool:
stack = []
for c in s:
if c == '(' or c == '[' or c == '{':
stack.append(c)
elif c == ')':
if not stack or stack[-1] != '(':
return False
stack.pop()
elif c == ']':
if not stack or stack[-1] != '[':
return False
stack.pop()
elif c == '}':
if not stack or stack[-1] != '{':
return False
stack.pop()
return not stack
```
这个算法的时间复杂度是 O(n),其中 n 是字符串的长度。因为我们需要遍历字符串中的每个字符,并且每个字符最多只会被压入和弹出栈一次。
阅读全文