题目描述

给你一个字符串 s 、一个字符串 t 。返回 s 中涵盖 t 所有字符的最小子串。如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 "" 。

注意:如果 s 中存在这样的子串,我们保证它是唯一的答案。

示例 1:

输入:s = "ADOBECODEBANC", t = "ABC"

输出:"BANC"

示例 2:

输入:s = "a", t = "a"

输出:"a"

思路:哈希表+滑动窗口

#include <iostream>
#include <vector>
#include <map>
#include <climits> using namespace std; class Solution {
public:
string minWindow(string s, string t) { map<char, int> t_map;
map<char, int> s_map; for(auto item:t)
t_map[item]++; int left = 0;
int right = 0;
int target_left_loc = -1;
int target_right_loc = 0; int mininim_valid_length = INT_MAX;
int matched = 0; while (left<=right && right<s.length()){
char s_c = s[right];
s_map[s_c]++; if(t_map.count(s_c)!=0 && s_map[s_c]==t_map[s_c])
matched += t_map[s_c]; while(left<=right && matched == t.length()){
int curr_valid_length = right - left + 1;
if(curr_valid_length < mininim_valid_length){
mininim_valid_length = curr_valid_length;
target_left_loc = left;
target_right_loc = right;
} s_c = s[left];
if(t_map.count(s_c)!=0){
s_map[s_c]--;
if(s_map[s_c] < t_map[s_c])
matched -= t_map[s_c];
} left++; }
right++;
} if(target_left_loc <= target_right_loc && target_left_loc!=-1){
string res = "";
for(int i=target_left_loc; i<=target_right_loc; i++)
res += s[i];
return res;
}else
return "";
}
}; int main(int argc, char const *argv[]){
string test_s = "a";
string test_t = "a"; Solution solu;
cout<<solu.minWindow(test_s, test_t)<<endl; return 0;
}

Leetcode-最小覆盖子串的更多相关文章

  1. Leetcode 76.最小覆盖子串

    最小覆盖子串 给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串. 示例: 输入: S = "ADOBECODEBANC", T = "A ...

  2. [LeetCode] 76. 最小覆盖子串 ☆☆☆☆☆(滑动窗口)

    https://leetcode-cn.com/problems/minimum-window-substring/solution/hua-dong-chuang-kou-suan-fa-tong- ...

  3. Java实现 LeetCode 76 最小覆盖子串

    76. 最小覆盖子串 给你一个字符串 S.一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串. 示例: 输入: S = "ADOBECODEBANC", T = ...

  4. [LeetCode]438. 找到字符串中所有字母异位词、76. 最小覆盖子串(滑动窗口解决子串问题系列)

    题目438. 找到字符串中所有字母异位词 给定一个字符串 s 和一个非空字符串 p,找到 s 中所有是 p 的字母异位词的子串,返回这些子串的起始索引. 说明: 字母异位词指字母相同,但排列不同的字符 ...

  5. 【LeetCode】76. 最小覆盖子串

    76. 最小覆盖子串 知识点:字符串:滑动窗口 题目描述 给你一个字符串 s .一个字符串 t .返回 s 中涵盖 t 所有字符的最小子串.如果 s 中不存在涵盖 t 所有字符的子串,则返回空字符串 ...

  6. POJ2185Milking Grid(最小覆盖子串 + 二维KMP)

    题意: 一个r*c的矩形,求一个子矩形通过平移复制能覆盖整个矩形 关于一个字符串的最小覆盖子串可以看这里http://blog.csdn.net/fjsd155/article/details/686 ...

  7. KMP算法 - 求最小覆盖子串

    KMP与最小覆盖子串 最小覆盖子串:对于某个字符串s,它的最小覆盖子串指的是长度最小的子串p,p满足通过自身的多次连接得到q,最后能够使s成为q的子串. 比如: 对于s="abcab&quo ...

  8. 【1】【leetcode-76】 最小覆盖子串

     最小覆盖子串(hard) (不会) 给定一个字符串 S 和一个字符串 T,请在 S 中找出包含 T 所有字母的最小子串. 示例: 输入: S = "ADOBECODEBANC", ...

  9. Milking Grid POJ - 2185 || 最小覆盖子串

    Milking Grid POJ - 2185 最小覆盖子串: 最小覆盖子串(串尾多一小段时,用前缀覆盖)长度为n-next[n](n-pre[n]),n为串长. 当n%(n-next[n])==0时 ...

  10. 【t011】最小覆盖子串

    Time Limit: 1 second Memory Limit: 32 MB [问题描述] 给定一个含有N个元素的序列A,你的任务就是求出序列A的最小覆盖子串的长度. 本题中的一些定义: 串S,是 ...

随机推荐

  1. 解决celery与django结合后,分别启动celery和django的进程同时调用定时任务的问题

    django中引入celery后发现在代码中写如下这样的定时任务,启动celery和django的工程后,他们都会调用这个定时任务导致,任务有的时候会冲突出现奇怪的问题.如何解决请继续看. sched ...

  2. Python实现snap:对齐多张遥感影像的空间范围

      本文介绍基于Python中ArcPy模块,实现基于栅格图像批量裁剪栅格图像,同时对齐各个栅格图像的空间范围,统一其各自行数与列数的方法.   首先明确一下我们的需求.现有某一地区的多张栅格遥感影像 ...

  3. mysql数据库表或行,被锁,杀死进程

    -- 查询进行 SHOW PROCESSLIST; -- 删除进程 kill 22459; -- 查找正在进行的 select * from information_schema.innodb_trx ...

  4. Docker下搭建MySql主从复制

    在Docker环境下搭建MySql主从复制,阅读此文章默认读者具备基础的Docker命令操作. 一.环境 1.Docker版本:Docker version 24.0.5, build ced0996 ...

  5. 一文搞懂Vue的MVVM模式与双向绑定

    v-model 是 Vue.js 框架中用于实现双向数据绑定的指令.它充分体现了 MVVM(Model-View-ViewModel)模式中的双向数据绑定特性.下面我们将详细解释 v-model 如何 ...

  6. 【VMware vSAN】全新vSAN 8 ESA快速存储架构配置文件服务并创建文件共享。

    早在2020年,VMware就发布了vSphere7.vSAN7.VCF4等等产品的更新,当时随着云原生的火热,基于容器技术的现代应用程序快速发展,Docker.Kubernetes这些容器平台被广泛 ...

  7. MediaCodec硬解流程

    一 MediaCodec概述 MediaCodec是Android 4.1(api 16)版本引入的低层编解码接口,同时支持音视频的编码和解码.通常与MediaExtractor.MediaMuxer ...

  8. fyne - 谁说用Go不能开发应用界面

    fyne项目介绍 fyne 是一个纯 Golang 的跨平台 GUI 库,跨平台库说实话,是有很多选择的,Flutter.Electron.QT等.fyne 绝对不是一个很大众的选择.但是在我,一名后 ...

  9. ForkJoinPool在生产环境中使用遇到的一个问题

    1.背景 在我们的项目中有这么一个场景,需要消费kafka中的消息,并生成对应的工单数据.早些时候程序运行的好好的,但是有一天,我们升级了容器的配置,结果导致部分消息无法消费.而消费者的代码是使用Co ...

  10. nginx location块

    location块在server块中使用,它的作用是根据客户端请求URL去定位不同的应用. 匹配格式 作用 location = /uri = 表示精确匹配,只有完全匹配上才能生效 location ...