补充上 Python基础班 课时二最后一题


[ ]对应检查 ■ 输入含有[]的字符串,输出对中括号出现规则的检测结果 ■[] OK][ NOTOK ■ [][] OK ][][ NOT OK ■ [[][]] OK []][[] NOT OK ■ [[][[]]] OK ][]][[][ NOT OK
a=input('请输入中括号')
type (a)
b = []

将输入的内容转换成数组操作

for item in a:
    b.append(item)

如果用户如数的内容是不是以'['开头, 或者不是医生']'结尾,或者输入的’[‘+’]‘个数不是偶数

说明不ok

if b[0]!= '[' or b[-1] != ']' or (b.count(']') + b.count('['))%2 != 0:
    print('输入的内容NOT OK',b[-1]) 
else:

从数组反向取值,

    for item in range(len(b)-1,-1,-1):

获取最后一个‘]’

        if b[item] == ']':

开启新的循环,从后往前寻找一个与之匹配的'['

            for p in range(item-1,-1,-1):
                if b[p] =='[':

如果找到了与之匹配的'['则将发现的'['']',

通过下标的方式替换为空字串

                    b[item] =''
                    b[p] =''
                    print (b,len(b))            
                    break
    if b.count('[')>0 or b.count(']')>0:
        print('输入的内容NOT OK')
        
    else:
        print ('输入的内容 OK')


希望大家指点
已邀请:

ClownFish

赞同来自:


一开始就去判断是奇数的,]开始,[结束 的就直接为非法,很好。
但后边的判断的时间复杂度有点高。快n2了。能不能再精简下。

要回复问题请先登录注册

返回顶部