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

Leetcode 76 Minimum Window Substring

题意

给定一个字符串s以及字符串t,求长度最短的s的子串,该子串包含所有字符串t中的字符。

题目链接

https://leetcode.com/problems/minimum-window-substring/

题解

可利用滑动窗口求解。有两个指针l和r。l代表滑动窗口的左端点,r代表滑动窗口的右端点。用一个map保存字符串t的计数。 滑动窗口内的子串右端点不断移动,用另一个map保存这个滑动窗口内字符的计数,一旦这个滑动窗口内字符的计数包含t的计数,那么就可以移动滑动窗口的左端点,从而找到最短的子串。

class Solution {
public:
    string minWindow(string s, string t) {
        int st = 0;
        int len = INT_MAX;
        int l = 0;
        int r = 0;
        unordered_map<char, int> mp;
        unordered_map<char, int> need;
        for(char c : t) {
            need[c]++;
        }
        int valid = 0;
        while( r < s.size()) {
            char ch = s[r];
            r++;
            if(need.count(ch)) {
                mp[ch]++;
                if(need[ch] == mp[ch]) {
                    valid++;
                }
            }

            while(valid == need.size()) {
                if(r - l < len) {
                    st = l;
                    len = r-l;
                }
                char ch = s[l];
                if(need.count(ch)) {
                    mp[ch]--;
                    if(mp[ch] < need[ch]) {
                        valid--;
                    }
                }
                l++;
            }

        }
        return len == INT_MAX ? "" : s.substr(st,len);
    }
};

算法复杂度: O ( n ) O(n) O(n)
空间复杂度: O ( 1 ) O(1) O(1)

相关文章:

  • 哈希表(概念)c++
  • 数据结构——模拟栈例题B3619
  • ShardingSphere 数据库中间件【详解大数据量下分库分表,读写分离,主从同步,以及ShardingSphere-JDBC使用,附有示例+代码】
  • 简单工厂模式 (Simple Factory Pattern) 在Spring Boot 中的应用
  • 机器学习实战(10):深度学习初探——卷积神经网络(CNN)
  • OpenGL(2)基于Qt做OpenGL开发
  • 深⼊理解指针(1)
  • 电脑想安装 Windows 11 需要开启 TPM 2.0 怎么办?
  • 从零开始学习PX4源码9(部署px4源码到gitee)
  • 低代码表单引擎刷新机制
  • Redis 存在线程安全问题吗?为什么?
  • 排查JVM的一些命令
  • langchain系列 - FewShotPromptTemplate 少量示例
  • Linux 和 Windows 区别
  • C++的封装(十五):第四种访问控制
  • STL 在线转 3MF,开启 3D 模型转换新体验
  • krpano学习笔记,端口修改,krpano二次开发文档,krpano三维div信息展示,krpano热点显示文字
  • Java 中的方法参数传递与值传递
  • 面试题之介绍下call,apply,bind相同点和不同点
  • linux 搭建nfs服务(共享文件夹)
  • 中电云主机怎样登入创建的网站/新媒体seo培训
  • 青岛网站建设服务公司/百度怎么注册自己的网站
  • 手机网站移动应用/seo赚钱吗
  • 建设部网站官网 取消八大员/北京网讯百度科技有限公司
  • 淘宝客怎么自建网站做推广/万能软文模板
  • ppt模版模板免费/seo搜索引擎优化排名哪家更专业