mycode
不会。。
参考:
class Solution(object): def minWindow(self, s, t): """ :type s: str :type t: str :rtype: str """ count1 = collections.defaultdict(int) count2 = [] for char in t: count1[char] += 1 count2.append(char) count = len(t) start = 0 minSize = len(s) + 1 minStart = 0 for end in range(len(s)): if s[end] in count2 : #print(end,count1,count2,count) count1[s[end]] -= 1 if count1[s[end]] >= 0: #<=0时表示出现了多余的t中要求的元素,比如t中两个A,现在出现了第三个A,所以没必要count-1 count -= 1 if count == 0: while True: if s[start] in count2 : if count1[s[start]] < 0: #s中第一个出现t中元素的位置可以被更换啦 count1[s[start]] += 1 else: # print(start) break start += 1 if minSize > end - start + 1: minSize = end - start + 1 minStart = start #print(end,count1,count2,count) if minSize < len(s) + 1: return s[minStart:minStart + minSize] else: return '' class Solution(object): def minWindow(self, s, t): """ :type s: str :type t: str :rtype: str """ count1 = collections.defaultdict(int) count2 = [] for char in t: count1[char] += 1 count2.append(char) count = len(t) start = 0 minSize = len(s) + 1 minStart = 0 for end in range(len(s)): if s[end] in count2 : #print(end,count1,count2,count) count1[s[end]] -= 1 if count1[s[end]] >= 0: count -= 1 if count == 0: while True: if s[start] in count2 : if count1[s[start]] < 0: count1[s[start]] += 1 else: print(start) break start += 1 if minSize > end - start + 1: minSize = end - start + 1 minStart = start #print(end,count1,count2,count) if minSize < len(s) + 1: return s[minStart:minStart + minSize] else: return ''