我是靠谱客的博主 成就热狗,最近开发中收集的这篇文章主要介绍用栈实现括号匹配(Python)括号匹配,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

括号匹配

  • 括号使用正确的句子返回True,不正确的返回False
  • 算法原理:
  1. 利用循环,字符串中的字符一个一个进行检测,检测到括号以外的东西跳过。
  2. 利用栈后进先出的原理,检测到左括号则入栈,检测到右括号,则栈中最后进入的左括号出栈,与之进行匹配检测。
  3. 匹配正确则continue,错误则返回False。全部循环结束且不出错则返回True。
  • 难度:★★★
  • 易错点:理清楚步骤和细节
  • 代码示例:
def match_parentheses(s):
    ls = []      # 将list当作一个栈使用
    parentheses = "()[]{}()【】「」"
    left_parentheses = "([{(【「"   # 左括号
    right_parentheses = ")]})】」"  # 右括号

    for i in range(0, len(s)):
        si = s[i]
        #如果不是括号则continue
        if parentheses.find(si) == -1:
            continue
        # 左括号入栈
        if left_parentheses.find(si) != -1:
            ls.append(si)
            continue
        if len(ls) == 0:
            return False
        # 检测到是右括号,出栈匹配
        if right_parentheses.find(si) != -1:
            p = ls.pop()  #最后入栈的左括号
            if (p == '(' and si == ')') or (p == '[' and si == ']') or (p == '{' and si == '}') or
                    (p == '(' and si == ')') or (p == '【' and si == '】') or (p == '「' and si == '」'):
                continue
            else:
                return False

    #检测是否有多余括号
    if len(ls) > 0:
        return False
    return True


if __name__ == '__main__':
    s = input("请输入要匹配的句子:")
    result = match_parentheses(s)
    print(s, result)
  • 运行结果
请输入要匹配的句子:{{[ddd(da)]}}
{{ddd(da)}} True
请输入要匹配的句子:(shdhd){sk{sjs}
(shdhd){sk{sjs} False

最后

以上就是成就热狗为你收集整理的用栈实现括号匹配(Python)括号匹配的全部内容,希望文章能够帮你解决用栈实现括号匹配(Python)括号匹配所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(86)

评论列表共有 0 条评论

立即
投稿
返回
顶部