python實現 從一個數組中找到完全含有另一個數組元素的最短子陣列
阿新 • • 發佈:2019-02-17
#找出陣列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)