首页 > 其他分享 >LeetCode 76. Minimum Window Substring

LeetCode 76. Minimum Window Substring

时间:2022-10-18 14:03:19浏览次数:108  
标签:start int ++ ans pos Substring 76 Window m2

​题目​

从第一个字符串中找到最小的子串,让子串中包含第二个字符串中的每一个字符。

我的思路来自滑动窗口思想,之前用来做自动摘要的。

把第一个字符串中的在第二个字符串中出现的字符都标记出来,找到第一个符合条件的区间。也就是第一个窗口。

然后依照之前的标记下标,开始滑动,区间左边每次进一格,右边一直寻找到满足条件的下边,一次滑动的过程就结束了。

在这个过程中寻找最小值。

一遍过。

class Solution {
public:
map<int,int> m;
map<int,int> m2;
map<int,int> m3;
int pos[100005];
string minWindow(string s, string t) {

int count=0;

for(int i=0;i<t.length();i++)
{
if(m[t[i]]==0)
count++;
m[t[i]]++;
}


int start=-1;
int end=-1;
int tag=0;
for(int i=0;i<s.length();i++)
{
if(m[s[i]]!=0)
{
m2[s[i]]++;
pos[tag++]=i;
if(start==-1)
start = tag-1;

if(m2[s[i]]==m[s[i]]&&m3[s[i]]==0&&count>0)
{
m3[s[i]]=1;
count--;
}

if(end==-1&&count==0)
{
end=tag-1;
}
}
}

if(start==-1||end==-1)
return "";

int x = start;
int y = end;
int ansx = pos[x];
int ansy = pos[y];
int ans = pos[y]-pos[x]+1;

m2.clear();

for(int i=x;i<=y;i++)
{
m2[s[pos[i]]]++;
}

for(int i=1;i<tag;i++)
{
m2[s[pos[x]]]--;
if(m2[s[pos[x]]]>=m[s[pos[x]]])
{
x=i;

if(ans > pos[y]-pos[x]+1)
{
ansx=pos[x];
ansy=pos[y];
ans = pos[y]-pos[x]+1;
}

}
else
{
int tag2=0;
for(int j=y+1;j<tag;j++)
{
m2[s[pos[j]]]++;
if(s[pos[j]]==s[pos[x]])
{
if(ans > pos[j] - pos[i] +1)
{
ansx=pos[i];
ansy=pos[j];
ans = pos[j]-pos[i]+1;
}

x=i;
y=j;
tag2=1;
break;
}
}

if(tag2==0)
break;
}
}

string res="";
for(int i=ansx;i<=ansy;i++)
{
res+=s[i];
}

return res;

}

};



标签:start,int,++,ans,pos,Substring,76,Window,m2
From: https://blog.51cto.com/u_15834522/5766287

相关文章

  • POJ-1276-Cash Machine(多重背包)
    CashMachineTimeLimit:1000MSMemoryLimit:10000KTotalSubmissions:30568Accepted:11018DescriptionABankplanstoinstallamachineforca......
  • Windows下Nginx初始化
    官网下载地址:https://nginx.org/en/download.html 二、安装部署1、下载完成后,解压缩,运行cmd,使用命令进行操作,不要直接双击nginx.exe,不要直接双击nginx.exe,不要直接双......
  • window.event什么时候可以获取到
    window.event 是一个由微软IE引入的属性,只有当DOM事件处理程序被调用的时候会被用到。它的值是当前正在处理的事件对象。据实际测验发现,window.event在异步事件触发......
  • WSL无法启动解决记录:"由于未安装所需的特性,无法启动操作。""Windows无法启动Hyper-V主
    电脑加装了内存条,无法启动WSL、问题记录检测过程:1.确保在BIOS开启HMX虚拟化2.在控制面板中开启“hyper-V”3.确保Hyper-V主机服务正常启动 做了上述步骤,发现问......
  • 762-GMAX3265 3.2微米 6500万分辨率 全局快门CMOS图像传感器
    GMAX32653.2微米6500万分辨率全局快门CMOS图像传感器        GMAX3265图像传感器的像素尺寸为3.2μm,具有6500万像素全分辨率,在12bi......
  • Airtest自动化测试实操案例 | Windows应用篇
    转自公众号:AirtestProject前言之前有同学留言说想看Windows应用的自动化,那么今天我们就用1个简单的例子,带大家一起来看一下Windows应用的自动化究竟有哪些坑。不过在此之......
  • Windows安装Python(图解)
    在Windows上安装 Python 和安装普通软件一样简单,下载安装包以后猛击“下一步”即可。Python安装包下载地址:https://www.python.org/downloads/打开该链接,可以看到有两......
  • POJ 3760. 魔兽世界(修订版) 题解
    一句话,大模拟,照着题意敲就完了。写的期间甚至因为疫情导致程序被锁在了机房www//3760.魔兽世界(修订版)#include<iostream>#include<cstring>#include<string>u......
  • Qt Windows高清DPI自适应分辨率缩放
    windows实际分辨率,1920x1080显示窗体w大小:800x600100缩放率:关闭Qt::AA_EnableHighDpiScalingui->pushButton->size()QSize(114,30)"\\\\.\\DISPLAY1"devicePixelRatio......
  • window10系统下Pytorch安装教程
    1、Pytorch介绍PyTorch是一个基于Torch的Python开源机器学习库,用于自然语言处理等应用程序它主要由Facebook的人工智能小组开发,不仅能够实现强大的GPU加速,同时还支持动态神......