📜  资质 |门 IT 2006 |问题 8(1)

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

资质 |门 IT 2006 |问题 8
简介

这是一道经典的编程问题,也是很多公司面试中的常客。问题的主题是编写一个程序,判断给定的字符串中是否存在一对合法的括号,如果存在,返回 true,否则返回 false。

示例

以下是代码示例:

def check_parenthesis(string):
    stack = []
    for char in string:
        if char == '(':
            stack.append('(')
        elif char == ')':
            if len(stack) < 1:
                return False
            else:
                stack.pop()
    return len(stack) == 0
解析

该函数首先将给定字符串的每个字符依次遍历,如果遇到左括号,则将其加入到一个栈中。如果遇到右括号,则将该栈中的最后一个左括号弹出。如果在弹出左括号之前该栈为空,则说明该字符串中没有匹配的左括号,返回 False。如果遍历完整个字符串后,该栈中仍有剩余的左括号,则说明该字符串中没有匹配的右括号,也返回 False。最后,如果栈为空,则说明该字符串中存在合法的括号匹配,返回 True。该解法的时间复杂度为 O(n),空间复杂度为 O(n)。

注意事项

在实现该函数时应注意,括号匹配的问题在实际生产环境中很常见,因此对于该问题的处理方法要熟悉并熟练掌握。同时,该问题还可以使用正则表达式或有限状态自动机等方法来解决。