有效的括号 两种解法(Python)

有效的括号 两种解法(Python),第1张

暴力替换 时间复杂度 O(N^2)
class Solution:
    def isValid(self, s: str) -> bool:
        if len(s) % 2 == 1:
            return False
        while True:
            startLen = len(s)
            s =  s.replace('[]','')
            s =  s.replace('{}','')
            s =  s.replace('()','')
            # 替换后和替换前长度相同 要么没有括号对 要么是空字符串
            if len(s) == startLen:
                return s == ''
利用栈 时间复杂度 O(N)
class Solution:
    def isValid(self, s: str) -> bool:
        if len(s) % 2 == 1:
            return False
        # 加一个 ? 来规避栈为空的情况
        dic = {'(':')', '[':']', '{':'}', '?':'?'}
        stack = ['?']
        for char in s:
            if char in dic:
                stack.append(char)
            elif dic[stack.pop()] != char:
                return False
        return len(stack) == 1

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/915838.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-16
下一篇2022-05-16

发表评论

登录后才能评论

评论列表(0条)

    保存