def minWindow(s: str, t: str) -> str:
s_hashmap = {}
t_hashmap = {}
left, right = 0, 0
min_substring = ' ' * 1001
if len(s) < len(t):
return ''
for c in t:
if c not in t_hashmap:
t_hashmap[c] = 1
else:
t_hashmap[c] += 1
while right < len(s):
if s[right] in t_hashmap:
if s[right] not in s_hashmap:
s_hashmap[s[right]] = 1
else:
s_hashmap[s[right]] += 1
if s_hashmap == t_hashmap:
if (right - left + 1) < len(min_substring):
min_substring = s[left:right+1]
s_hashmap.clear()
left = right = left + 1
else:
right += 1
return min_substring
print(minWindow("ADOBECODEBANC", "ABC"))# your code goes here
ZGVmIG1pbldpbmRvdyhzOiBzdHIsIHQ6IHN0cikgLT4gc3RyOgogICAgICAgIHNfaGFzaG1hcCA9IHt9CiAgICAgICAgdF9oYXNobWFwID0ge30KICAgICAgICBsZWZ0LCByaWdodCA9IDAsIDAKICAgICAgICBtaW5fc3Vic3RyaW5nID0gJyAnICogMTAwMQogICAgICAgIGlmIGxlbihzKSA8IGxlbih0KToKICAgICAgICAgICAgcmV0dXJuICcnCiAgICAgICAgZm9yIGMgaW4gdDoKICAgICAgICAgICAgaWYgYyBub3QgaW4gdF9oYXNobWFwOgogICAgICAgICAgICAgICAgdF9oYXNobWFwW2NdID0gMQogICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgdF9oYXNobWFwW2NdICs9IDEKICAgICAgICAKICAgICAgICB3aGlsZSByaWdodCA8IGxlbihzKToKICAgICAgICAgICAgaWYgc1tyaWdodF0gaW4gdF9oYXNobWFwOgogICAgICAgICAgICAgICAgaWYgc1tyaWdodF0gbm90IGluIHNfaGFzaG1hcDoKICAgICAgICAgICAgICAgICAgICBzX2hhc2htYXBbc1tyaWdodF1dID0gMQogICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICBzX2hhc2htYXBbc1tyaWdodF1dICs9IDEgICAgICAgICAgICAgCgogICAgICAgICAgICBpZiBzX2hhc2htYXAgPT0gdF9oYXNobWFwOgogICAgICAgICAgICAgICAgaWYgKHJpZ2h0IC0gbGVmdCArIDEpIDwgbGVuKG1pbl9zdWJzdHJpbmcpOgogICAgICAgICAgICAgICAgICAgIG1pbl9zdWJzdHJpbmcgPSBzW2xlZnQ6cmlnaHQrMV0KICAgICAgICAgICAgICAgIHNfaGFzaG1hcC5jbGVhcigpCiAgICAgICAgICAgICAgICBsZWZ0ID0gcmlnaHQgPSBsZWZ0ICsgMQogICAgICAgICAgICBlbHNlOiAgCiAgICAgICAgICAgICAgICByaWdodCArPSAxCgogICAgICAgIHJldHVybiBtaW5fc3Vic3RyaW5nCiAgICAgICAgCnByaW50KG1pbldpbmRvdygiQURPQkVDT0RFQkFOQyIsICJBQkMiKSkjIHlvdXIgY29kZSBnb2VzIGhlcmU=