1323507298 发表于 2018-8-9 19:33:52

VBVCBCVBCVGDFGDFGDFGCCV

小脑斧 发表于 2018-8-17 15:50:09

qq792005991 发表于 2013-3-25 22:46
隐藏内容是源码呢?

Ya_Ya 发表于 2018-9-27 09:33:16

查看

creep1997 发表于 2018-10-20 12:33:38

支持小甲鱼

moehhh 发表于 2018-10-28 17:10:48

甲鱼牛逼

ryq 发表于 2018-11-7 14:42:43

学习下小甲鱼老师的精神

jieweilin 发表于 2018-11-10 19:25:32

可见

企鹅君 发表于 2018-11-16 17:12:02

啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊

冰镇豆沙 发表于 2018-11-19 21:59:27

太好了可以写实验报告了呜呜呜

Kyrie11 发表于 2018-12-3 23:26:19

原来如此。

幻梦凡 发表于 2019-1-16 22:05:03

感谢分享

a1572930214 发表于 2019-2-25 10:00:13

看一下

古章元 发表于 2019-3-15 07:18:27

q

ShaoDaria 发表于 2019-3-17 17:27:05

我想看代码

ziwu 发表于 2019-4-14 09:59:29

不错~~~~~~~~~~~~~~~~~~~~~~~~~

逗你玩儿 发表于 2019-4-24 21:27:33

学习啦!

cwhsmile 发表于 2019-4-29 13:03:55

我又太高看自己了,本以为很简单,结果让自己脑子抽筋了一天才搞定{:10_266:}
#deep是递归深度控制标识,不用改。
def dc(s,deep=0):
    #定义一个左括号游标i
    i = 0
    while True:
      #首先检测有没有左括号
      if s in ['{','[','(']:
            #记录左括号的类型left
            left = s
            #再新定义一个右括号的游标j
            j = i + 1
            while True:
                #当检测到左括号后紧接着检测右括号
                if s in ['}',']',')']:
                  right = s
                  #如果右括号也检测到,则检测两个括号是否匹配
                  if left+right == '()' or left+right == '[]' or left+right == '{}':
                        #确定匹配后再判断当前递归深度,不是在最外层返回当前的层级长度。
                        if deep > 0:
                            return j
                        #在最外层,把左括号游标定位到当前位置,从当前位置往后再继续检测
                        i = j
                        #右括已经找到,退出重新检测左括号
                        break
                  else:
                        #如果左右两括号不匹配则返回False
                        return False
                #没有找到右括号反而找到了左括号,则进入递归。
                elif s in ['{','[','(']:
                  #递归深度加一
                  deep = deep + 1
                  #进入递归,返回内层的长度或者返回False
                  next_back = dc(s,deep)
                  #退出递归后把深度减一
                  deep = deep - 1
                  #返回False说明内层左右括号不匹配,向上一层抛False
                  if not next_back:
                        return False
                  #如果内层括号匹配,则把右括号游标向右移动内层的长度。
                  else:
                        j = j + next_back
                #没有找到右括号就向右移动游标
                j += 1
                #判断当前右括号游标是否越界,如果越界说明缺少右括号,向上抛False
                if j >= len(s):
                  return False
      #如果在没有左括号的情况下先检测到了右括号则返回False
      elif s in ['}',']',')']:
            return False
      #没有找到左括号就向右移动游标
      i += 1
      #判断当前左括号游标是否越界,如果越界说明没有左括号,返回True
      if i >= len(s):
            return True
print(dc(input('请输入带N多个括号的字符串:')))

Crazyjm211 发表于 2019-5-18 20:50:55

k

雷楼某 发表于 2019-9-15 19:28:07

啊啊啊啊啊枚金币咋办

lh1996 发表于 2019-9-16 09:40:28

页: 4 5 6 7 8 9 10 11 12 13 [14] 15 16 17 18
查看完整版本: 括号匹配(栈的应用)