当前位置: 首页> 房产> 市场 > 100个万能营销方案_js制作网页游戏_厦门seo网络优化公司_中国广告公司前十强

100个万能营销方案_js制作网页游戏_厦门seo网络优化公司_中国广告公司前十强

时间:2025/7/9 13:22:27来源:https://blog.csdn.net/weixin_74175349/article/details/146988774 浏览次数:0次
100个万能营销方案_js制作网页游戏_厦门seo网络优化公司_中国广告公司前十强

思路源于

【小白都能听懂的算法课】【力扣】【LeetCode 76】最小覆盖子串|滑动窗口|字符串

 初始化先创建t的哈希表记录t中的字符以及它出现的次数,t的have记录t中有几种字符

s的哈希表记录窗口中涵盖t的字符以及它出现的次数,初始化时出现次数全部为0,s的have记录s中有几种字符已经覆盖了t中的字符

先滑动右指针扩大窗口,只要遇到t中有的字符,就让s哈希表对应字符出现次数+1,直到s能覆盖t(sHave==tHave时),这时就要记录下这个窗口(也就是可能是最终结果的子串)的起始位置和终止位置,并且不断将左指针移动缩小窗口,如果碰到t中存在的字符那么就要让s哈希表对应字符出现次数-1,直到s刚好不能覆盖t(sHave==tHave-1时)。不断重复这个过程直到滑动窗口边界越出就结束了

class Solution {public String minWindow(String s, String t) {int sStart = 0, sEnd = s.length();int sHave = 0, tHave = 0;Map<Character, Integer> sMap = new HashMap<>();Map<Character, Integer> tMap = new HashMap<>();for (int i = 0; i < t.length(); i++) {char charAt = t.charAt(i);if (!tMap.containsKey(charAt)) {tHave++;tMap.put(charAt, 1);sMap.put(charAt, 0);} else {tMap.put(charAt, tMap.get(charAt) + 1);}}for (int right = 0, left = 0; right < s.length(); right++) {if (tMap.containsKey(s.charAt(right))) {char charAtRight = s.charAt(right);sMap.put(charAtRight, sMap.get(charAtRight) + 1);//若是刚好新增某个字符达到和t中字符数量一致的情况,则认为s中这个字符刚好覆盖if (sMap.get(charAtRight).equals(tMap.get(charAtRight))) {sHave++;}while (sHave == tHave) {//更新结果子串的开始索引和结束索引if (right - left < sEnd - sStart) {sStart = left;sEnd = right;}char charAtLeft = s.charAt(left);if (tMap.containsKey(charAtLeft)) {sMap.put(charAtLeft, sMap.get(charAtLeft) - 1);//若是刚好删除某个字符导致t中这个字符无法覆盖s中的这个字符if (sMap.get(charAtLeft).equals(tMap.get(charAtLeft) - 1)) {sHave--;}}left++;}}}return sEnd == s.length() ? "" : s.substring(sStart, sEnd + 1);}
}

 

关键字:100个万能营销方案_js制作网页游戏_厦门seo网络优化公司_中国广告公司前十强

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: