剑指 Offer II 017. 含有所有字符的最短字符串
给定两个字符串 s 和 t 。返回 s 中包含 t 的所有字符的最短子字符串。如果 s 中不存在符合条件的子字符串,则返回空字符串 “” 。

如果 s 中存在多个符合条件的子字符串,返回任意一个。

注意: 对于 t 中重复字符,我们寻找的子字符串中该字符数量必须不少于 t 中该字符数量。

示例 1:

输入:s = "ADOBECODEBANC", t = "ABC"
输出:"BANC"
解释:最短子字符串 "BANC" 包含了字符串 t 的所有字符 'A'、'B'、'C'

示例 2:

输入:s = "a", t = "a"
输出:"a"

示例 3:

输入:s = "a", t = "aa"
输出:""
解释:t 中两个字符 'a' 均应包含在 s 的子串中,因此没有符合条件的子字符串,返回空字符串。
class Solution {
public:string minWindow(string s, string t) {int len1 = s.size(), len2 = t.size();if(len1 < len2){return "";}vector<int> need(128, 0);int need_cnt = len2;int left = 0, right = 0, size = len1 + 1, start = 0;for(int i = 0; i < len2; ++i){++need[t[i]];}while(right < len1){char c = s[right];if(need[c] > 0){need_cnt -= 1;}need[c]--;if(need_cnt == 0){while(left < right && need[s[left]] < 0 ){  //need[s[left]] < 0 证明是不需要的 踢出去就行了++need[s[left]];++left;}if(right - left + 1 < size){size = right - left + 1;start = left;}//如果是边界地方++need[s[left]];++left;++need_cnt;}++right;}return size == len1 + 1 ? "" : s.substr(start, size); }
};

剑指 Offer II 017. 含有所有字符的最短字符串相关推荐

  1. 【算法leetcode每日一练】剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合

    文章目录 剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合: 样例 1: 样例 2: 提示: 分析 题解 java c c++ python go rust javascri ...

  2. 剑指 Offer II 080. 含有 k 个元素的组合

    题目 给定两个整数 n 和 k,返回 1 - n 中所有可能的 k 个数的组合. 示例 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3] ...

  3. Leetcode刷题笔记——剑指offer II (一)【整数、数组、字符串、链表】

    目录 整数 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 00 ...

  4. 力扣OJ 剑指 Offer II

    目录 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 004. ...

  5. 剑指Offer II --- 2021/9/2

    目录 剑指Offer II 116. 朋友圈 剑指Offer II 098. 路径的数目 剑指Offer II 068. 查找插入位置 剑指Offer II 078. 合并排序链表 剑指Offer I ...

  6. Leetcode刷题笔记——剑指offer II (五)【二分、排序、回溯】

    这里写目录标题 二分查找 剑指 Offer II 069. 山峰数组的顶部 剑指 Offer II 070. 排序数组中只出现一次的数字 剑指 Offer II 071. 按权重生成随机数 剑指 Of ...

  7. leetcode每日一题--前缀树;前缀哈希;深搜;面试题 08.04. 幂集;648. 单词替换面试题 01.09. 字符串轮转;剑指 Offer II 062. 实现前缀树

    leetcode每日一题 ps:今天的每日一题没意思,简单的模拟,自己换一道 面试题 08.04. 幂集 幂集.编写一种方法,返回某集合的所有子集.集合中不包含重复的元素. 说明:解集不能包含重复的子 ...

  8. 剑指 Offer II 114. 外星文字典(困难 图 bfs 哈希表 拓扑排序 字符串 数组)

    剑指 Offer II 114. 外星文字典 现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同. 给定一个字符串列表 words ,作为这门语言的词典,words 中的字符串已经 按 ...

  9. LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和

    剑指 Offer II 056. 二叉搜索树中两个节点之和 Ideas 这题有点类似一个组合题,首先是通过二叉树遍历得到一个序列,然后再通过LeetCode Algorithm 1. 两数之和的方法查 ...

最新文章

  1. mysql temporary_MySQL中的两种临时表
  2. python创建csv文件并写入-Python 将数据写入文件(txt、csv、excel)
  3. 二.无显示器远程连接树莓派
  4. VS2012 +OpenCv2.4.4配置
  5. Codeforces Round #462 (Div. 2) C. A Twisty Movement dp + 思维转换
  6. uva 12627——Erratic Expansion
  7. Redis学习---(13)Redis 发布订阅
  8. 第一:Git安装和使用github(超详解)
  9. java报505_Java调用URL错误,报505
  10. js 正则表达式奇偶字符串替换_js正则表达式replace替换变量方法
  11. JDBC(实现增删改查的通用操作)
  12. 非常实用的,使用SQL查询连续号码段。(做计费系统或SP的兄弟经常会用到)...
  13. Windows C盘格式化或者同平台迁移oracle数据库
  14. docker的安装与加速器的配置
  15. bbsmax mysql_mysql 数据库 备份 还原
  16. 国内外知名的统计数据库和统计网站
  17. 计算机组成原理复习笔记
  18. 好好说话之hijack GOT
  19. Day08 - HTML5 Canvas 实现彩虹画笔绘画板指南
  20. 《人生要耐得住寂寞》

热门文章

  1. 【JavaScript】案例1:使用JS完成注册页面校验
  2. !EOF简单说明,常用来结束while循环
  3. echarts 不刷新页面更新数据
  4. Day_03——MySQL数据库查询语句练习
  5. Css3实现背景毛玻璃效果
  6. javaSE I/O流(一)—— File类
  7. android涟漪动画,如何添加涟漪效果并在android中的按钮上有自定义背景?
  8. 用“掩码位图“,制作类似.png的“透明图片“①
  9. 狂神学习系列04:MySQL+JDBC
  10. ar和nm命令的使用