题解 | #最小覆盖子串#

最小覆盖子串

https://www.nowcoder.com/practice/c466d480d20c4c7c9d322d12ca7955ac

class Solution:
    def minWindow(self , S: str, T: str) -> str:
        if not T or not S:
            return ''
        
        dic = {}
        for c in T:
            dic[c] = dic.get(c, 0) + 1

        res = []
        for i in range(len(S)):
            count = 0
            record = dic.copy()
            if S[i] in record:
                start = i
                record[S[i]] -= 1
                count += 1
                if count == len(T):
                    return S[i]
                for j in range(i + 1, len(S)):
                    if S[j] in record:
                        if record[S[j]] == 0:
                            continue
                        elif record[S[j]] > 0:
                            record[S[j]] -= 1
                            count += 1
                            if count == len(T):
                                tmp = S[start:j + 1]
                                res.append([tmp, len(tmp)])
        res = sorted(res, key=lambda x: x[1])
        return res[0][0] if res else ''  

全部评论

相关推荐

10-05 23:02
东北大学 Java
我说句实话啊:那时候看三个月培训班视频,随便做个项目背点八股,都能说3 40w是侮辱价
点赞 评论 收藏
分享
头像
11-27 14:28
长沙理工大学
刷算法真的是提升代码能力最快的方法吗? 刷算法真的是提升代码能力最快的方法吗?
牛牛不会牛泪:看你想提升什么,代码能力太宽泛了,是想提升算法能力还是工程能力? 工程能力做项目找实习,算法也分数据结构算法题和深度学习之类算法
点赞 评论 收藏
分享
评论
2
收藏
分享
牛客网
牛客企业服务