📅  最后修改于: 2023-12-03 15:21:24.615000             🧑  作者: Mango
'| |问题 21' 是一道经典的算法面试题,也称为“括号配对问题”、“括号匹配问题”等。题目描述如下:
给定一个只包含 '(',')','{','}','[',']' 的字符串,判断字符串中的括号是否匹配。若存在左括号,则必须存在右括号与之对应,且左括号必须以正确的顺序出现。
例如,字符串 "([{}])" 是合法的,而 "([)]" 是非法的。
这个问题可以用栈(Stack)来解决。具体地,我们可以扫描字符串左右括号,遇到一个左括号就将其压入栈中,遇到一个右括号就将栈顶元素弹出,并判断它们是否匹配。如果栈顶元素与当前右括号匹配,则继续扫描;否则,直接返回 false。
当字符串扫描完毕后,如果栈为空,那么说明所有的括号都匹配;否则,说明还有一些左括号没有匹配到右括号,返回 false。
下面是使用 Python 代码解决 '| |问题 21' 的示例:
def is_valid(s: str) -> bool:
stack = []
mapping = {")": "(", "}": "{", "]": "["}
for c in s:
if c in mapping:
if not stack:
return False
top_element = stack.pop()
if mapping[c] != top_element:
return False
else:
stack.append(c)
return not stack
'| |问题 21' 是一道经典的栈应用题,很多面试官都会考察这个问题。掌握了栈的知识,并能够熟练解决这类问题,对程序员来说非常重要。