输入包括两行,第一行一个字符串,代表str1,第二行也是一个字符串,代表str2
。
输出str1的字串中含有str2所有字符的最小字符串长度,如果不存在请输出0。
abcde ac
3
“abc”中包含“ac”,且“abc”是所有满足条件中最小的。
12345 344
0
def minWindow(s, t): """ :type s: str :type t: str :rtype: str """ need,window={},{} for i in t: need[i]=need.get(i,0)+1 #定义窗口左右节点,初始化最小长度 left,right = 0,0 minlen = float('inf') #窗口包含t字符个数 count=0 while right<len(s): if need.get(s[right],0)==0: right+=1 continue window[s[right]]=window.get(s[right],0)+1 if window[s[right]]==need[s[right]]: count+=1 right+=1 #当窗口包含t所有的字符时,缩小窗口 while count==len(t): if right-left<minlen: minlen=right-left #缩小窗口 if s[left] not in need: left+=1 continue #出窗,不满足条件结束循环 if window[s[left]]==need[s[left]]: count-=1 window[s[left]]-=1 left+=1 if minlen==float('inf'): return 0 else: return minlen s=input() t=input() print(minWindow(s,t))链接:https://www.nowcoder.com/questionTerminal/58569ba19c05436e9eb492244b0902d8