Leetcode 76. 最小覆盖子串 (双指针,map)
时间:2022-07-26
本文章向大家介绍Leetcode 76. 最小覆盖子串 (双指针,map),主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
给你一个字符串 S、一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串。
示例:
输入: S = "ADOBECODEBANC", T = "ABC"
输出: "BANC"
说明:
- 如果 S 中不存这样的子串,则返回空字符串
""
。 - 如果 S 中存在这样的子串,我们保证它是唯一的答案。
i是前指针,j是后指针,i>=j,每次遍历的时候次数都减一,当减到零为止有效字符数+1,有效字符数达到匹配串时,更新答案,注意更新后指针,当且仅当已经出现两次匹配串时才更新后指针,注意要把减去的次数加回来!
class Solution {
public:
string minWindow(string s, string t) {
unordered_map<char,int>p;
for(char c:t)p[c]++;
int k=p.size();
int st=0,len=INT_MAX,cnt=0;
for(int i=0,j=0,cnt=0;s[i];i++)
{
if(p[s[i]]==1)cnt++;
p[s[i]]--;
while(p[s[j]]<0)p[s[j++]]++;
if(cnt==k)
{
if(len>i-j+1)
{
len=i-j+1;
st=j;
}
}
//cout<<cnt<<endl;
}
return len==INT_MAX?"":s.substr(st,len);
}
};
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Laravel框架验证码类用法实例分析
- Yii框架常见缓存应用实例小结
- 使用Docker搭建DPlayer视频弹幕接口API后端
- php+jQuery ajax实现的实时刷新显示数据功能示例
- yii2.0框架使用 beforeAction 防非法登陆的方法分析
- PHP使用 Imagick 扩展实现图片合成,圆角处理功能示例
- php项目中类的自动加载实例讲解
- Yii框架参数配置文件params用法实例分析
- 使用Kotlin实现文字渐变TextView的代码
- thinkPHP5框架路由常用知识点汇总
- PHP实现一个限制实例化次数的类示例
- AndroidStudio中重载方法@Override的使用详解
- mysqli扩展无法在PHP7下升级问题的解决
- PHP通过文件保存和更新信息的方法分析
- PHP中将一个字符串部分字符用星号*替代隐藏的实现代码