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

76. 最小覆盖子串-力扣hot100(C++)

76. 最小覆盖子串s

初始化和特判

//本题做题思想
//从头开始,首先找到一个包含所有字母的字串,将i移动到包含字串字母的位置,然后更新长度和字符串ans后,
//i的位置加1,j的位置也加1,从新开始上面的流程,找一个包含所有字符串t字母的子串unordered_map<char,int>need;//need记录下来每个字母‘需要’多少,为正数//对于不需要的字母和本来需要但超出数量的字母,依旧记录,但减1后变负数int cnt = 0;//cnt记录总共需要多少个int ansnum = 100010;//ans记录最短的字符子串,ansnum维护最小的长度string ans = "";if(s.size() < t.size() ) return ans;if(s == t) return s;

统计字符数

for(int i = 0; i < t.size();i++){need[t[i]]++;
}
cnt = t.size();

找满足题目条件的字符子串

int i = 0, j = 0;while(i < s.size()){while(j < s.size() && cnt > 0){if(need[s[j]] > 0) cnt--;need[s[j]]--;if(cnt == 0 || j == s.size() - 1)break;j++;//while循环记得递增}if(cnt != 0) return ans;while(i < j){if(need[s[i]] == 0) break;need[s[i]]++;i++;//while循环记得递增}if(j - i  + 1 < ansnum){ans = s.substr(i, j - i + 1);ansnum = j - i + 1;}cnt += 1;need[s[i]]++;i++,j++;//记得递增}

具体解析过程可看此题解,本题解为C++实现,链接题解为python

http://www.lryc.cn/news/316810.html

相关文章:

  • vue的生命周期有那些
  • OpenStack安装步骤
  • 如何借助CRM系统获得直观的业务洞察?CRM系统图表视图解析!
  • 制作图片马:二次渲染(upload-labs第17关)
  • XGB-20:XGBoost中不同参数的预测函数
  • websocket 使用示例
  • 基于YOLOv8/YOLOv7/YOLOv6/YOLOv5的水下目标检测系统(深度学习模型+UI界面+训练数据集)
  • 中间件 Redis 服务集群的部署方案
  • 生成哈夫曼树C卷(JavaPythonC++Node.jsC语言)
  • Java代码审计安全篇-SSRF(服务端请求伪造)漏洞
  • 入门可解释机器学习和可解释性【内容分享和实战分析】
  • Promise其实也不难
  • 吴恩达 x Open AI ChatGPT ——如何写出好的提示词视频核心笔记
  • JVM从1%到99%【精选】-【初步认识】
  • pdf转图片(利用pdf2image包)
  • SwiftUI的转场动画
  • Trust Region Policy Optimization (TRPO)
  • 消息服务--Kafka的简介和使用
  • 【c++11线程库的使用】
  • 无限debugger的几种处理方式
  • 数据库基础理论知识
  • 华为OD机试真题-模拟目录管理-2024年OD统一考试(C卷)
  • yield代码解释
  • C#四部曲(知识补充)
  • Vue中的数据交互有几种方式
  • 2.MySQL中的数据类型
  • 身份证查询真伪-三要素查验-ios身份证实名认证接口调用
  • @EnableWebMvc介绍和使用详细demo
  • VC-旅游系统-213-(代码+说明)
  • 重学SpringBoot3-ErrorMvcAutoConfiguration类