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

leetcode76 Minimum Window Substring

给定两个字符串s和t, 找到s的一个子串,使得t的每个字符都出现在子串中,求最短的子串

由于要每个字符出现,所以顺序其实没有关系
因此我们可以定义一个map,统计t中字符出现次数
然后在s中慢慢挪动滑动窗口,如果符合要求就缩短滑动窗口,直到不符合,然后继续移动

class Solution {
public:string minWindow(string s, string t) {int ans = -1, ans_len = -1, n = s.size(), m = t.size();if(n < m)return "";unordered_map<char, int> mp;for(char& c:t)++mp[c];int cnt = mp.size(), pre = 0;for(int i = 0; i < n; ++i){auto it = mp.find(s[i]);if(it == mp.end())continue;--it->second;if(it->second == 0){--cnt;if(cnt == 0){if(m == 1)return t;if(ans_len == -1 || i - pre + 1 < ans_len){ans_len = i - pre + 1;ans = pre;}while(pre < i){auto it2 = mp.find(s[pre]);++pre;if(it2 == mp.end()){if(i - pre + 1 < ans_len){ans_len = i - pre + 1;ans = pre;}continue;}++it2->second;if(it2->second == 1){++cnt;break;}else{if(i - pre + 1 < ans_len){ans_len = i - pre + 1;ans = pre;}}}while(pre < i){auto it2 = mp.find(s[pre]);if(it2 == mp.end()){++pre;continue;}else{break;}}}}}if(ans == -1)return "";return s.substr(ans, ans_len);}
};
http://www.lryc.cn/news/179466.html

相关文章:

  • 简单工厂模式~
  • 基于Java的会员管理系统设计与实现(源码+lw+部署文档+讲解等)
  • 数据结构 图 并查集 遍历方法 最短路径算法 最小生成树算法 简易代码实现
  • idea Springboot 教师标识管理系统开发mysql数据库web结构java编程计算机网页源码maven项目
  • 2023-9-30 JZ36 二叉搜索树与双向链表
  • 在windows的ubuntu LTS中安装及使用EZ-InSAR进行InSAR数据处理
  • 腾讯mini项目-【指标监控服务重构】2023-08-25
  • 数据挖掘(1)概述
  • YApi Pro
  • AUTOSAR RTE介绍(更新版230925)
  • 深度学习笔记_1、定义神经网络
  • 【Java 进阶篇】MySQL 事务详解
  • Spring修炼之旅(3)自动装配与注解开发
  • 嵌入式Linux应用开发-基础知识-第十六章GPIO和Pinctrl子系统的使用
  • Ubuntu系统下使用apt-get安装Mysql8
  • jenkins联动显示或隐藏参数
  • Error: Activity class {xxx.java} does not exist
  • 保护模式阶段测试-模拟3环0环调用
  • Dart笔记:stream_channel 包用法
  • Java进阶必会JVM-深入浅出Java虚拟机
  • 1200*B. Sorted Adjacent Differences(构造)
  • 恼人的TCP套接字部分发送成功场景
  • ROS2 中的轻量级、自动化、受控回放
  • Egg使用jwt拦截jtoken验证
  • 装饰器模式详解和实现(设计模式 二)
  • 面试问到MySQL模块划分与架构体系怎么办
  • 并查集及其优化
  • LeetCode 周赛上分之旅 #48 一道简单的树上动态规划问题
  • mysql报错:Column Count Doesn‘t Match Value Count at Row 1
  • 安卓 kuaishou 设备did和egid 学习分析