#找出数组strW中包含strA所有元素的最少情况
strA=['testing','pattern']
strW=['hello','this','is','a','testing','page','description','testing','pattern','all','is','about','testing']
start=0
end=0
abstractstart=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 False
while(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:
break
print(abstractstart)
print(abstractend)
print(target)
python实现 从一个数组中找到完全含有另一个数组元素的最短子数组
最新推荐文章于 2024-07-28 03:05:07 发布