python实现 从一个数组中找到完全含有另一个数组元素的最短子数组

来源:互联网 发布:优美句子知乎 编辑:程序博客网 时间:2024/05/01 02:26
#找出数组strW中包含strA所有元素的最少情况strA=['testing','pattern']strW=['hello','this','is','a','testing','page','description','testing','pattern','all','is','about','testing']start=0end=0abstractstart=0 #子数组起始位置abstractend=0 #子数组结束为止target=len(strW) #子数组长度def IsContainAll(): #判断strW子数组是否包含strA所有元素    if len(strA)>end-start+1:        return False    sameCount=0    for i in range(0,len(strA)):        for j in range(start,end+1):            if strA[i]==strW[j]:                sameCount+=1                break    if sameCount==len(strA):        return True    else:        return Falsewhile(True):    while(not IsContainAll() and end<len(strW)-1):#如果没有包含且end没有到达元素末尾,则end+1        end+=1    while IsContainAll():        if end-start<target: #包含所有元素组成的串小于之前的串长度,则更新串长度            target=end-start+1            abstractstart=start            abstractend=end        start+=1 #从start+1处重新遍历    if end>=len(strW)-1:        breakprint(abstractstart)print(abstractend)print(target)

0 0
原创粉丝点击