lsdsg 发表于 2021-6-13 15:08:20

python小作业

【问题描述】

假设一个输入字符串中包含圆括号、方括号和花括号三种类型的括号,以及其它一些任意字符。编写程序,判别字符串串中的括号是否正确匹配,即:
1.      各种左、右括号的个数要一致;
2.      要符合正确的嵌套规则。

【输入形式】

输入一个含各种括号的字符串
【输出形式】

能正确匹配输出True,反之输出False
【样例输入】

[/]{((x)({{*}*}w)w){f}{v}[%(^{u}{ })([[ ]-]h)]{c}(*)}

【样例输出】

True

Twilight6 发表于 2021-6-13 17:07:23



前面帮你做了一些,真的希望你还是自己先做做,论坛不是来求答案的

你可以在你做题过程中遇到问题,把自己代码和问题贴上来

lsdsg 发表于 2021-6-13 21:57:17

Twilight6 发表于 2021-6-13 17:07
前面帮你做了一些,真的希望你还是自己先做做,论坛不是来求答案的

你可以在你做题过程中遇到问题, ...

好吧{:10_254:}

qq1151985918 发表于 2021-6-15 09:01:47

参考代码:
def isRight(data: str) -> bool:
    # -----------------------------------------
    # 以下 4 行代码可有可无,不影响结果,略微提高效率
    if (data.count("(") != data.count(")") or
      data.count("[") != data.count("]") or
      data.count("{") != data.count("}")):
      return False
    # -----------------------------------------
    # 以下为主要核心代码
   
    new_data = "".join({}"])
    while True:
      if "()" in new_data:
            new_data = new_data.replace("()", "")
      elif "[]" in new_data:
            new_data = new_data.replace("[]", "")
      elif "{}" in new_data:
            new_data = new_data.replace("{}", "")
      else:
            break
    return False if new_data else True


if __name__ == "__main__":
    in_data = "[/]{((x)({{*}*}w)w){f}{v}[%(^{u}{ })([[ ]-]h)]{c}(*)}"
    print(isRight(in_data))
页: [1]
查看完整版本: python小作业