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

leetcode 76 最小覆盖子串

一、题目描述

二、解题思路

整体思路:

模拟寻找最小覆盖子集的过程,由于可借助同向双指针且可以做到指针不回退,所以可以用滑动窗口的思想来解决这个问题。

具体思路:

(1)数组hash1用于统计t中每一个字符出现的频次,变量kinds用于统计有效字符的种类,例如t为“aabc”,则kinds为3;

(2)数组hash2用于统计窗口内每一个字符的频次;

(3)滑动窗口要素:

<1>进窗口:进入hash1,进之后维护count

 //进窗口

 char in=s[right];

 if(hash1[in]==++hash2[in]) count++;

<2>判断:窗口内的字符串为覆盖子集

 while(count==kinds)

<3>更新:更新len和start

//更新

if(right-left+1<len){

        len=right-left+1;

        start=left;

}

<4>出窗口:出hash1,出之前维护count

//出窗口

char out=s[left++];

if(hash2[out]--==hash1[out]) count--;

(4)如果未找到合法的覆盖子集,就返回空字符串。如果找到了最小覆盖子串,就返回这个最小的覆盖子串。

三、代码实现

class Solution {
public:string minWindow(string s, string t) {int hash1[128]={0};//统计t中每一个字符的频次int kinds=0;//统计有效字符的种类for(auto c:t) if(hash1[c]++==0) kinds++;int hash2[128]={0};//统计窗口内每一个字符的频次//滑动窗口int start,len=INT_MAX;for(int left=0,right=0,count=0;right<s.size();right++){//进窗口char in=s[right];if(hash1[in]==++hash2[in]) count++;//判断while(count==kinds){//更新if(right-left+1<len){len=right-left+1;start=left;}//出窗口char out=s[left++];if(hash2[out]--==hash1[out]) count--;}}return len==INT_MAX?"":s.substr(start,len);}
};

http://www.xdnf.cn/news/1337617.html

相关文章:

  • leetcode-python-349两个数组的交集
  • 如何使用 DeepSeek 助力工作​
  • Seaborn数据可视化实战
  • 审美积累 | 界面设计拆分 | Redesign Health - Services 医疗页面设计
  • 记录一次el-table+sortablejs的拖拽bug
  • 打开或者安装Navicat时出现Missing required library libcurl.dll,126报错解决方法(libmysql_e.dll等)
  • 【运维进阶】if 条件语句的知识与实践
  • 【CS创世SD NAND征文】存储芯片在工业电表中的应用与技术演进
  • RabbitMQ:延时消息(死信交换机、延迟消息插件)
  • 深入理解Docker网络:从docker0到自定义网络
  • Python核心技术开发指南(001)——Python简介
  • NPM组件 @angular_devkit/core 等窃取主机敏感信息
  • uniapp vue3 ts自定义底部 tabbar菜单
  • AUTOSAR自适应平台(AP)中元类(Metaclass)、建模(Modeling) 和 ARXML 这三者的核心关系与区别
  • AR眼镜在制造业的生产设备智慧运维方案介绍
  • Multi Agents Collaboration OS:Browser Automation System
  • 自动驾驶GOD:3D空间感知革命
  • C++析构函数
  • 训练后数据集后部署PaddleOCR转trt流程
  • 使用C++17标准 手写一个vector
  • [Mysql数据库] Mysql安全知识
  • 12KM无人机高清图传通信模组——打造未来空中通信新高度
  • Docker操作速查表
  • 动态规划----6.单词拆分
  • AI重塑软件测试:质量保障的下一站
  • 【clion】cmake脚本1:调试脚本并构建Fargo项目win32版本
  • Linux: network: arp: arp_accept
  • HTML应用指南:利用POST请求获取全国刘文祥麻辣烫门店位置信息
  • 我从零开始学习C语言(12)- 循环语句 PART1
  • DRF序列化器