通过遍历字符串 t,整理t中出现的字符(key)和次数(value),保存在map中,然后遍历字符串s

var minWindow = function(s, t) {let r=l=0let len = s.length;let subStart = len + 1; //最符合的子串的起点let minLength = len + 1;  //长度最小值let missType = 0;//t中存在的字符类型let map = new Map();//用来存储t中字符,以及缺失度//整理t出现的字符(key)和次数(value)for(let i=0;i<t.length;i++){let a=map.get(t[i]) ||0map.set(t[i],a+1)}missType=map.size  //map.size是t的种类for(r; r < len; r++){ //遍历字符串sif(map.has(s[r])){   //统计当前字符出现的次数let value = map.get(s[r]) - 1; //出现过,则减1map.set(s[r], value);  //保存更改过后的次数}if(map.get(s[r]) === 0){ //当满足出现次数,则完成一个种类missType--;  //t的种类-1}while(missType === 0){ //找到满足要求的种类和出现次数//计算当前窗口长度let length =  r-l + 1;//找到最小的长度minlength=Math.min(length,r-l+1)//记录当前左指针位置subStart = l; //左指针右移,处理左指针。if(map.has(s[l])){ //l对应的字符在t中出现过,指针右移,所以当前字符将移除窗口let value = map.get(s[l]) + 1;//则需求加1map.set(s[l], value);}if(map.get(s[l]) > 0){ //当前要被移除的字符value大于0,说明在当前窗口内出现次数不足missType++;}l++; //左指针右移一位}}return s.substr(subStart, minLength);
};

力扣76,最小覆盖字串(JavaScript)相关推荐

  1. 双指针算法之滑动窗口 | 力扣76.最小覆盖字串

    本文讲解力扣76.最小覆盖字串问题 主要用到的是滑动窗口的思想 目录 76.最小覆盖字串 题目: 分析: 步骤描述: 复杂度分析: 结果 76.最小覆盖字串 题目: 给定字符串 S 以及字符串 T , ...

  2. LeetCode系列76—最小覆盖字串

    题意 76. 最小覆盖子串 题解 方法一:滑动窗口 在滑动窗口类型的问题中都会有两个指针,一个用于「延伸」现有窗口的 r 指针,和一个用于「收缩」窗口的 l 指针.在任意时刻,只有一个指针运动,而另一 ...

  3. 力扣- - 最短回文串(KMP算法)

    力扣- - 最短回文串(KMP算法) 文章目录 力扣- - 最短回文串(KMP算法) 一.题目描述 二.分析之KMP算法 1.暴力法 2.KMP算法 3.next数组求法1:暴力查找最长的前后缀 4. ...

  4. 美团/力扣(647)--回文字串

    美团/力扣(647)–回文字串 文章目录 美团/力扣(647)--回文字串 一.题目描述 二.分析 方法一:中心扩散 代码一: 方法二:DP 代码二: 一.题目描述 力扣: 美团: 兄弟们!刷题的重要 ...

  5. leetcode必刷题(四)lee75 颜色分类、lee76 最小覆盖字串、lee78 子集、lee79 单词搜索、lee84 柱状图中最大的矩形、lee85 最大矩形、lee96 不同的二叉搜索树、

    lee75 颜色分类 patition 三个指针 lee76 最小覆盖字串 滑动窗口 lee78 子集 无重复数字 回溯 lee79 单词搜索 回溯 lee84 柱状图中最大的矩形 单调栈 lee85 ...

  6. 最小覆盖字串—leetcode76

    难度困难441 给你一个字符串 S.一个字符串 T,请在字符串 S 里面找出:包含 T 所有字母的最小子串. 示例: 输入: S = "ADOBECODEBANC", T = &q ...

  7. leetcode76:最小覆盖字串(滑动窗口)

    一:题目 二:思路 思路拿别人的,感觉写的很nice!! 渣渣杰只能膜拜大佬的了 1.滑动窗口的思想: left 指针和 ring 指针,保证两个指针之间的字符串包含所需要的全部字符. 2在保证 1 ...

  8. 力扣55. 跳跃游戏(JavaScript)

    //每个节点的最大覆盖范围是否能覆盖终点 var canJump = function(nums) {//只有一个,已经在终点if(nums.length==1){return true}//每个数的 ...

  9. 力扣376. 摆动序列(JavaScript)

    var wiggleMaxLength = function(nums) {if(nums.length<=1){return nums.length}let cur=0 //当前差let pr ...

最新文章

  1. PostgreSQL 恢复模式错误日志增强 - 提供正在恢复的WAL(XLOG)文件位置
  2. 《深入理解Hadoop(原书第2版)》——2.3Hadoop系统的组成
  3. for循环和数组练习
  4. RIP GlassFish –感谢所有的鱼。
  5. 华为nova 7 se鸿蒙,荣耀v40和华为Nova7Pro哪个好-参数对比-更值得入手
  6. 读他:男人最怕听的十句话
  7. Linux Hugetlbfs内核源码简析-----(二)Hugetlbfs挂载
  8. 兼容性问题总结(转)
  9. oracle 的控制结构
  10. 面向对象和结构化程序设计的区别
  11. 主机通过网络访问虚拟机VirtualBox的WEB服务器
  12. 400多款微信公众号小游戏源码集合源码
  13. Anaconda 更新pip等库
  14. GeoTools操作shapefile
  15. 5e服务器显示steam名字,5e为什么不显示我csgo的名字(5ecsgo)
  16. android批量发送短信
  17. 解决teamviewer访问超时限制的问题
  18. 国信证券有限责任公司关于创设南航认沽权证的公告
  19. 父级fixed_CSS-应用position:fixed时是否可以保持父元素的宽度?
  20. 玩客云手动设置IP地址

热门文章

  1. 学习笔记(07):MySQL数据库运维与管理-02-用户权限授予演示
  2. android 视网膜黄斑检查 amsler,自测黄斑病变 | 一张图搞定
  3. javaweb功能模块如何合理设计_设计行业如何合理税筹
  4. 数据结构与算法的时间空间复杂度
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的网上相册展示系统
  6. 基于JAVA+SpringMVC+MYSQL的网上人才招聘系统
  7. python学习笔记8-列表、集合、字典推导式
  8. [vijos1982][NOIP2015]子串
  9. 如何自建appender扩展Log4j框架
  10. Python稳基修炼之计算机等级考试易错概念题3(含答案与解析)