当前位置: 首页 > 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.dtcms.com/a/342502.html

相关文章:

  • 有关spring-ai的defaultSystem与systemMessage优先级
  • AI 发展的伦理困局:在创新与规范间寻找平衡
  • MYSQL库及表的操作
  • Linux进程间传递文件描述符:为什么不能用FIFO而要用Unix域套接字?
  • 效果驱动复购!健永科技RFID牛场智能称重项目落地
  • 计算两幅图像在特定交点位置的置信度评分。置信度评分反映了该位置特征匹配的可靠性,通常用于图像处理任务(如特征匹配、立体视觉等)
  • 从数据抽取到加载:如何保障ETL中间环节的高效与稳定
  • 缓存与Redis
  • LG P5008 [yLOI2018] 锦鲤抄 Solution
  • 读《精益数据分析》:精益画布——创业与产品创新的高效工具
  • RabbitMQ:消费者可靠性(消费者确认、消费失败处理、业务幂等性)
  • RabbitMQ面试精讲 Day 26:RabbitMQ监控体系建设
  • 1. 准备工作---数据分析编程 - 从入门到精通
  • uniapp 自定义组件封装、easycom匹配规则
  • Go语言变量声明与初始化详解
  • TDengine IDMP 运维指南(管理策略)
  • CRII-Net
  • 【领码课堂】让Java数据检索更智能——Bean Searcher全景解读
  • 从”0“开始学JAVA——第九节下 泛型和集合框架
  • #运维 | 前端 # Linux http.server 实践:隐藏长文件名,简短路径 (http://IP:port/别名 ) 访问
  • AI研究引擎的简单技术实现步骤
  • Web 安全之 HTTP 响应截断攻击详解
  • JavaScript 系列之:图片压缩
  • 微信小程序设计的请求封装方案(request.js)
  • NPM模块化总结
  • DINOv3 重磅发布
  • 计算机网络技术学习-day6《三层交换机配置》
  • python发布文章和同步文章到社区的工具小脚本
  • 第三阶段数据库-6:sql中函数,多表查询,运算符,索引,约束
  • 智慧城管云平台源码,微服务vue+element+springboot+uniapp技术架构,数字化综合执法办案系统