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

面试经典150题——Day33

文章目录

    • 一、题目
    • 二、题解

一、题目

76. Minimum Window Substring

Given two strings s and t of lengths m and n respectively, return the minimum window
substring
of s such that every character in t (including duplicates) is included in the window. If there is no such substring, return the empty string “”.

The testcases will be generated such that the answer is unique.

Example 1:

Input: s = “ADOBECODEBANC”, t = “ABC”
Output: “BANC”
Explanation: The minimum window substring “BANC” includes ‘A’, ‘B’, and ‘C’ from string t.
Example 2:

Input: s = “a”, t = “a”
Output: “a”
Explanation: The entire string s is the minimum window.
Example 3:

Input: s = “a”, t = “aa”
Output: “”
Explanation: Both 'a’s from t must be included in the window.
Since the largest window of s only has one ‘a’, return empty string.

Constraints:

m == s.length
n == t.length
1 <= m, n <= 105
s and t consist of uppercase and lowercase English letters.

Follow up: Could you find an algorithm that runs in O(m + n) time?

题目来源: leetcode

二、题解

滑动窗口,两个哈希表

class Solution {
public:string minWindow(string s, string t) {string res = s;int n1 = s.length(),n2 = t.length();if(n1 < n2) return "";unordered_map<char,int> tmap;unordered_map<char,int> window;for(int i = 0;i < n2;i++) tmap[t[i]]++;int i = 0,j = 0;int begin = 0;int resLen = s.length();int cnt = 0;bool exist = false;while(j < n1){//如果未满,则扩大jif(tmap[s[j]] == 0){j++;continue;}if(window[s[j]] < tmap[s[j]]) cnt++;window[s[j]]++;j++;cout << 111 << endl;while(cnt == n2){if(j - i <= resLen){begin = i;resLen = j - i;exist = true;}//缩小iif(tmap[s[i]] == 0){i++;continue;}if(window[s[i]] == tmap[s[i]]){cnt--;}window[s[i]]--;i++;}}res = s.substr(begin,resLen);return exist ? res : "";}
};
http://www.lryc.cn/news/220768.html

相关文章:

  • 再谈Android重要组件——Handler(Native篇)
  • Javaweb之javascript的详细解析
  • Linux常用命令——cd命令
  • VHDL基础知识笔记(1)
  • volatile-日常使用场景
  • 策略模式在数据接收和发送场景的应用
  • 学习LevelDB架构的检索技术
  • Docker Swarm实现容器的复制均衡及动态管理:详细过程版
  • Proteus仿真--1602LCD显示仿手机键盘按键字符(仿真文件+程序)
  • Rust语言和curl库编写程序
  • FSDiffReg:心脏图像的特征和分数扩散引导无监督形变图像配准
  • 音视频技术开发周刊 | 318
  • asp.net docker-compose添加sql server
  • uniapp 微信小程序 uni-file-picker上传图片报错 chooseAndUploadFile
  • 《向量数据库指南》——用 Milvus Cloud和 NVIDIA Merlin 搭建高效推荐系统结论
  • 致:CSGO游戏搬砖人的一封信
  • MuLogin浏览器如何在一台设备上安全登录和管理多个LinkedIn账户?
  • STM32_project:led_beep
  • [go 反射] 入门
  • 【计算机网络】数据链路层-MAC和ARP协议
  • 本周三商店更新:多款套装下线,四款升级武器带异色皮肤返厂
  • WindowsServer2019-搭建FTP服务器
  • 国际阿里云服务器买哪种好用点?
  • 2023NOIP A层联测25 总结
  • Thread类的基本操作(JAVA多线程)
  • Redis 的三种部署模式
  • 【ArcGIS Pro二次开发】(73):使用NPOI库操作Excel
  • python获取电脑所连接的wifi密码
  • 动态壁纸软件Live Wallpaper HD mac中文版功能特色
  • Spring Boot 配置主从数据库实现读写分离