美文网首页
字符串的括号匹配(python)

字符串的括号匹配(python)

作者: Jackpot_0213 | 来源:发表于2021-08-06 17:26 被阅读0次

    括号匹配说明

    • 本方法字符串中只有 () 括号

    算法思路

    • 从左到右遍历字符串
    • 如果不是括号,默认是有效字符,遍历下一个字符
    • 如果是左括号,左括号进入栈,遍历下一个字符
    • 如果是右括号
      • 当前栈是否还有左括号
      • 没有则匹配失败
      • 有,出栈比较是否匹配
    • 如果出栈的字符和当前字符匹配为一对括号,遍历下一个
    • 不匹配,则匹配失败
    • 遍历完毕后,判断栈中是否还有剩余左括号
      • 没有,匹配成功
      • 有,说明有多余左括号,匹配失败

    python代码

    def is_encode(str):
        # 放左右括号的栈
        bracket = '()'
        open_brackets = []
        close_brackets = [')']
        # 见一个右括号就出一个左括号
        for i in range(len(str)):
            si = str[i]
            # 如果不是括号,下一个
            if bracket.find(si) == -1:
                continue
    #       如果是左括号就入栈
            if si == '(':
                open_brackets.append(si)
                continue
            # 走下下面说明就是右括号了,因为上面已经排除了不是字母和左括号了
            if len(open_brackets) == 0:
                # 现在来了个右括号,但是没有匹配的了
                return False
            #上面排除了各种情况,现在开始正常匹配了
            p = open_brackets.pop()
            if p =='(' and si ==')':
                continue
            else:
                return False
    
        #判断是否还有多余的左括号呀
        if len(open_brackets) > 0:
            return False
        return True
    

    相关文章

      网友评论

          本文标题:字符串的括号匹配(python)

          本文链接:https://www.haomeiwen.com/subject/iphivltx.html