剑指 Offer II 017. 含有所有字符的最短字符串
剑指 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. 含有所有字符的最短字符串相关推荐
- 【算法leetcode每日一练】剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合
文章目录 剑指 Offer II 080. 含有 k 个元素的组合 | 77. 组合: 样例 1: 样例 2: 提示: 分析 题解 java c c++ python go rust javascri ...
- 剑指 Offer II 080. 含有 k 个元素的组合
题目 给定两个整数 n 和 k,返回 1 - n 中所有可能的 k 个数的组合. 示例 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3], [1,2], [1,3] ...
- Leetcode刷题笔记——剑指offer II (一)【整数、数组、字符串、链表】
目录 整数 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 00 ...
- 力扣OJ 剑指 Offer II
目录 剑指 Offer II 001. 整数除法 剑指 Offer II 002. 二进制加法 剑指 Offer II 003. 前 n 个数字二进制中 1 的个数 剑指 Offer II 004. ...
- 剑指Offer II --- 2021/9/2
目录 剑指Offer II 116. 朋友圈 剑指Offer II 098. 路径的数目 剑指Offer II 068. 查找插入位置 剑指Offer II 078. 合并排序链表 剑指Offer I ...
- Leetcode刷题笔记——剑指offer II (五)【二分、排序、回溯】
这里写目录标题 二分查找 剑指 Offer II 069. 山峰数组的顶部 剑指 Offer II 070. 排序数组中只出现一次的数字 剑指 Offer II 071. 按权重生成随机数 剑指 Of ...
- leetcode每日一题--前缀树;前缀哈希;深搜;面试题 08.04. 幂集;648. 单词替换面试题 01.09. 字符串轮转;剑指 Offer II 062. 实现前缀树
leetcode每日一题 ps:今天的每日一题没意思,简单的模拟,自己换一道 面试题 08.04. 幂集 幂集.编写一种方法,返回某集合的所有子集.集合中不包含重复的元素. 说明:解集不能包含重复的子 ...
- 剑指 Offer II 114. 外星文字典(困难 图 bfs 哈希表 拓扑排序 字符串 数组)
剑指 Offer II 114. 外星文字典 现有一种使用英语字母的外星文语言,这门语言的字母顺序与英语顺序不同. 给定一个字符串列表 words ,作为这门语言的词典,words 中的字符串已经 按 ...
- LeetCode Algorithm 剑指 Offer II 056. 二叉搜索树中两个节点之和
剑指 Offer II 056. 二叉搜索树中两个节点之和 Ideas 这题有点类似一个组合题,首先是通过二叉树遍历得到一个序列,然后再通过LeetCode Algorithm 1. 两数之和的方法查 ...
最新文章
- mysql temporary_MySQL中的两种临时表
- python创建csv文件并写入-Python 将数据写入文件(txt、csv、excel)
- 二.无显示器远程连接树莓派
- VS2012 +OpenCv2.4.4配置
- Codeforces Round #462 (Div. 2) C. A Twisty Movement dp + 思维转换
- uva 12627——Erratic Expansion
- Redis学习---(13)Redis 发布订阅
- 第一:Git安装和使用github(超详解)
- java报505_Java调用URL错误,报505
- js 正则表达式奇偶字符串替换_js正则表达式replace替换变量方法
- JDBC(实现增删改查的通用操作)
- 非常实用的,使用SQL查询连续号码段。(做计费系统或SP的兄弟经常会用到)...
- Windows C盘格式化或者同平台迁移oracle数据库
- docker的安装与加速器的配置
- bbsmax mysql_mysql 数据库 备份 还原
- 国内外知名的统计数据库和统计网站
- 计算机组成原理复习笔记
- 好好说话之hijack GOT
- Day08 - HTML5 Canvas 实现彩虹画笔绘画板指南
- 《人生要耐得住寂寞》
热门文章
- 【JavaScript】案例1:使用JS完成注册页面校验
- !EOF简单说明,常用来结束while循环
- echarts 不刷新页面更新数据
- Day_03——MySQL数据库查询语句练习
- Css3实现背景毛玻璃效果
- javaSE I/O流(一)—— File类
- android涟漪动画,如何添加涟漪效果并在android中的按钮上有自定义背景?
- 用“掩码位图“,制作类似.png的“透明图片“①
- 狂神学习系列04:MySQL+JDBC
- ar和nm命令的使用