0
点赞
收藏
分享

微信扫一扫

Leetcode-76 最小覆盖子串

mafa1993 2022-03-11 阅读 70

在这里插入图片描述

class Solution(object):
    def minWindow(self, s, t):
        # 滑动窗口 ➕ 哈希表
        dict_t,dict_s = defaultdict(int),defaultdict(int)
        len_s, len_t = len(s), len(t)
        for i in range(len_t):
            dict_t[t[i]] += 1
        cnt, l, ans = 0, 0, ""
        for r in range(len_s): #指针右移,找到符合条件的窗口
            dict_s[s[r]] += 1
            if dict_s[s[r]] <= dict_t[s[r]]:
                cnt += 1 # 记录窗口内有效字符数
            while dict_s[s[l]] > dict_t[s[l]] and l < r: 
            # 指针左移:左边界的字符不在t中;
            # 或新增加的右边界值符合条件并且和左边界值相同
                dict_s[s[l]] -=1
                l += 1
            if cnt == len_t:#有效字符数等于cnt时,更新答案
                if ans =="" or len(ans) > r-l+1: # 更新ans的条件 
                    ans = s[l:r+1]
        return ans 


 
 


举报

相关推荐

0 条评论