题目
给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串。
示例:
输入: S = “ADOBECODEBANC”, T = “ABC”
输出: “BANC”
思路
代码
class Solution:
def minWindow(self, s: str, t: str) -> str:
dic={}
for i in t:
if i not in dic.keys():
dic[i]=1
else:
dic[i]+=1
start=0
minlen=len(s)
cnt=0
result=""
for i in range(len(s)):
#print(start,i,dic,cnt)
if (s[i] in t):
dic[s[i]]-=1
if dic[s[i]]>=0:
cnt+=1
while(cnt==len(t)):
if (i-start+1)<=minlen:
minlen=i-start+1
result=s[start:i+1]
start+=1
if s[start-1] in t:
dic[s[start-1]]+=1
if dic[s[start-1]]>0:
cnt-=1
return result