面试经典题---76.最小覆盖子串

76.最小覆盖子串

我的解法:

滑动窗口:

  • 使用map1记录子串t中各字符的出现频数,map2记录子串s的滑动窗口[left, right]中各字符的出现频数;
  • 当s[right]字符是所需字符时,即t中该字符数量大于等于s的滑动窗口中这一字符的数量时,将match加1;
  • 当s的滑动窗口左端元素冗余时,直接将窗口向右收缩直至左端元素非冗余,得到的新滑动窗口仍满足包含t中所有字符(因为收缩的元素都是冗余元素);
  • 使用res记录s中涵盖t所有字符的最小子串;
  • 最后还有一步对match的判断,小于t.size()就代表s不存在涵盖所有t中字符的子串
class Solution {
public:
    string minWindow(string s, string t) {
        if(s.size() < t.size()){
            return "";
        }
        string res = s;
        int left = 0, right = 0;
        int match = 0;
        unordered_map<char, int> map1, map2;
        for(auto ch : t){
            map1[ch]++;
        }
        while(right < s.size()){
            map2[s[right]]++;
            if(map1[s[right]] >= map2[s[right]]){
                match++;
            }
            while((left < right) && (map1[s[left]] < map2[s[left]])){
                map2[s[left++]]--;
            }
            if(match == t.size()){
                if(right - left + 1 < res.size()){
                    res = s.substr(left, right - left + 1);
                }
            }
            right++;
        }
        return match == t.size() ? res : "";
    }
};

相关推荐

  1. 面试经典---76.覆盖

    2024-02-05 14:12:03       25 阅读
  2. LeetCode-热100:76. 覆盖

    2024-02-05 14:12:03       14 阅读
  3. 【LeetCode刷记录】76. 覆盖

    2024-02-05 14:12:03       10 阅读
  4. leetcode 76. 覆盖

    2024-02-05 14:12:03       43 阅读
  5. LeetCode -- 76. 覆盖

    2024-02-05 14:12:03       19 阅读
  6. LeetCode 76 覆盖

    2024-02-05 14:12:03       19 阅读
  7. LC 76.覆盖

    2024-02-05 14:12:03       14 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-02-05 14:12:03       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-02-05 14:12:03       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-02-05 14:12:03       18 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-02-05 14:12:03       20 阅读

热门阅读

  1. Spring面试大全-IOC容器03

    2024-02-05 14:12:03       24 阅读
  2. scss和less的区别

    2024-02-05 14:12:03       26 阅读
  3. 机器人抓取中的混淆概念

    2024-02-05 14:12:03       30 阅读
  4. Postgresql数据库存储过程中的事务处理

    2024-02-05 14:12:03       25 阅读
  5. 编程思维与生活琐事的内在关联及其应用价值

    2024-02-05 14:12:03       32 阅读
  6. Matlab 移动最小二乘求解仿射变换

    2024-02-05 14:12:03       33 阅读
  7. Rust基础拾遗--看的不多只看一篇--基础

    2024-02-05 14:12:03       32 阅读