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

NC28 最小覆盖子串【牛客网】

文章目录

  • 零、原题链接
  • 一、题目描述
  • 二、测试用例
  • 三、解题思路
  • 四、参考代码

零、原题链接


NC28 最小覆盖子串

一、题目描述

在这里插入图片描述

二、测试用例

在这里插入图片描述

三、解题思路

  1. 基本思路:
      滑动窗口 + 散列表
  2. 具体思路:
    • 先统计字符串 T 中的字符数量;
    • 建立滑动窗口:
      • 每次遍历字符,将该字符添加进窗口:
        • 同时判断是否是属于字符串 T 中的字符,是则对应字符数量 – ,如果该字符数量将为 0 ,则字符类型数量 --;
      • 如果字符类型数量为 0 ,则表示窗口已经包含了字符串 T 的所有字符,则开始收缩窗口:
        • 每次收缩窗口,则判断舍弃的字符是否是字符串 T 中的字符,是则对应字符数量 ++ ,
        • 如果该字符数量大于 0 ,则表示已经收缩到最小窗口,
          • 则判断是否为当前最短的,是则更新最短字符串的起始坐标;
          • 字符类型数量 ++ ;
    • 判断最短字符串下标是否合法,合法则返回对应字符串,不合法说明不存在对应字符串,则返回空字符串;

四、参考代码

时间复杂度: O ( ∣ S ∣ + ∣ T ∣ ) \Omicron(|S|+|T|) O(S+T)【两个字符串都只遍历了一遍】
空间复杂度: O ( ∣ T ∣ ) \Omicron(|T|) O(T)【只需要额外存放字符串 T 的字符数量】

#include <unordered_map>
class Solution {public:/*** 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可*** @param S string字符串* @param T string字符串* @return string字符串*/string minWindow(string S, string T) {unordered_map<char, int> m;for (int i = 0; i < T.length(); i++) {if (m.count(T[i]))m[T[i]]++;elsem.emplace(T[i], 1);}int minS = -S.length() - 1, minE = 0;int num = m.size();for (int s = 0, e = 0; e < S.length(); e++) {if (m.count(S[e]) && --m[S[e]] == 0)// 添加字符num--;while (num == 0) { // 舍弃字符if (m.count(S[s]) && ++m[S[s]] > 0) {if (e - s < minE - minS) {minS = s;minE = e;}num++;}s++;}}return minS < 0 ? "" : S.substr(minS, minE - minS + 1);}
};
http://www.xdnf.cn/news/867313.html

相关文章:

  • 基于Axure+墨刀设计的电梯管理系统云台ERP的中保真原型图
  • Apache APISIX
  • CMake入门:3、变量操作 set 和 list
  • 深度学习项目之RT-DETR训练自己数据集
  • 通过模型文件估算模型参数量大小
  • Flask框架详解:轻量高效的Python Web开发利器
  • 深入解析Oracle SQL调优健康检查工具(SQLHC):从原理到实战优化
  • intense-rp-api开源程序是一个具有直观可视化界面的 API,可以将 DeepSeek 非正式地集成到 SillyTavern 中
  • Windows系统工具:WinToolsPlus 之 SQL Server Suspect/质疑/置疑/可疑/单用户等 修复
  • stress 服务器压力测试的工具学习
  • linux操作系统---网络协议
  • LeetCode 3370.仅含置位位的最小整数
  • 二维 根据矩阵变换计算镜像旋转角度
  • 短剧+小说网盘搜索系统(支持全网网盘转存拉新)
  • 《T/CI 404-2024 医疗大数据智能采集及管理技术规范》全面解读与实施分析
  • [ Qt ] | 与系统相关的操作(二):键盘、定时器、窗口移动和大小
  • 虚拟机CentOS 7 网络连接显示“以太网(ens33,被拔出)“、有线已拔出、CentOS7不显示网络图标
  • 【Unity】R3 CSharp 响应式编程 - 使用篇(集合)(三)
  • Async-profiler 内存采样机制解析:从原理到实现
  • Elasticsearch中什么是分析器(Analyzer)?它由哪些组件组成?
  • 2025年- H68-Lc176--46.全排列(回溯,组合)--Java版
  • 通光散基因组-文献精读139
  • C++11 defaulted和deleted函数从入门到精通
  • 【更新中】(文档+代码)基于推荐算法和Springboot+Vue的购物商城
  • 【echarts】分割环形图组件
  • 【Java算法】八大排序
  • 【2025】通过idea把项目到私有仓库(3)
  • [Java 基础]银行账户程序
  • 如何选择合适的embedding模型用于非英文语料
  • 亚马逊站内信规则2025年重大更新:避坑指南与合规策略