当前位置: 首页 > article >正文

面试经典题---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 : "";
    }
};


http://www.kler.cn/a/229623.html

相关文章:

  • CMD批处理命令入门(4)——ping,ipconfig,arp,start,shutdown,taskkill
  • Go语言之路————go环境的初始化
  • Mysql--运维篇--主从复制和集群(主从复制I/O线程,SQL线程,二进制日志,中继日志,集群NDB)
  • QT鼠标、键盘事件
  • Vite与Webpack打包内存溢出问题优雅处理方式
  • 【开源】基于JAVA+Vue+SpringBoot的数据可视化的智慧河南大屏
  • 某人寿保险公司:超融合承载核心业务系统,支撑信创改造与数据中心异地迁移
  • 计算机毕业设计 基于SpringBoot的线上教育培训办公系统的设计与实现 Java实战项目 附源码+文档+视频讲解
  • OllyDebug的使用方法. IDA Pro分析程序的控制流图,可以找到不同的函数入口点. 在汇编代码中定位特定函数可能是一个耗时且复杂的过程
  • ChatGPT高效提问—prompt基础
  • 在java中获取excel的cell值的时候报错
  • 验证码倒计时:用户界面的小细节,大智慧
  • Feature refinement 的阅读笔记
  • Matplotlib热力图的创意绘制指南【第54篇—python:Matplotlib热力图】
  • idea运行程序报错 java 程序包org.junit不存在
  • C语言:内存函数
  • 前端 - 基础 列表标签 - 自定义列表 详解
  • 国外邮件群发平台如何选择?邮件营销工具?
  • Go语言中...(三个点)的使用几个常见情况
  • Midjourney新功能介绍:风格参考(Style References)详解
  • Dell服务器iDRAC9忘记密码, 通过RACADM工具不重启 重置密码
  • 【软件设计师笔记】深入探究操作系统
  • Unity类银河恶魔城学习记录3-2 Entity源代码 P48
  • Java 学习和实践笔记(1)