创见博客
括号匹配
七崽爱吃小饼干2025/12/17阅读 0专栏 算法合集

给定一个只包括 '(',')','{','}','[',']' 的字符串 s ,判断字符串是否有效。

有效字符串需满足:

左括号必须用相同类型的右括号闭合。 左括号必须以正确的顺序闭合。 每个右括号都有一个对应的相同类型的左括号。

示例 1:

codeType

输入:s = "()"

输出:true

示例 2:

codeType
输入:s = "()[]{}"

输出:true

示例 3:

codeType
输入:s = "(]"

输出:false

示例 4:

codeType
输入:s = "([])"

输出:true

示例 5:

codeType
输入:s = "([)]"

输出:false

提示:

1 <= s.length <= 104 s 仅由括号 '()[]{}' 组成

解法:

python
class Solution(object):
    def isValid(self, s):
        """
        :type s: str
        :rtype: bool
        """
        '''
        这题是数据结构栈部分的经典题了
        在字符串中将左括弧逐个入栈,在碰到右括弧时进行出栈比较即可
        最终的时间复杂度和空间复杂度都是O(n)
        '''
        stack = []
        kuohao_map = {
            ')' : '(',
            ']' : '[',
            '}' : '{'
        }
        for ch in s:
            if ch in kuohao_map.values():
                stack.append(ch)
            elif ch in kuohao_map.keys():
                if len(stack) == 0: # 栈空
                    return False
                ele = stack.pop()
                if kuohao_map[ch] != ele:
                    return False

        return True if len(stack) == 0 else False
        

评论
0/100