📜  | |问题 21(1)

📅  最后修改于: 2023-12-03 15:21:24.615000             🧑  作者: Mango

'| |问题 21' 程序员介绍

什么是 '| |问题 21'?

'| |问题 21' 是一道经典的算法面试题,也称为“括号配对问题”、“括号匹配问题”等。题目描述如下:

给定一个只包含 '(',')','{','}','[',']' 的字符串,判断字符串中的括号是否匹配。若存在左括号,则必须存在右括号与之对应,且左括号必须以正确的顺序出现。

例如,字符串 "([{}])" 是合法的,而 "([)]" 是非法的。

怎么解决 '| |问题 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' 是一道经典的栈应用题,很多面试官都会考察这个问题。掌握了栈的知识,并能够熟练解决这类问题,对程序员来说非常重要。