当前位置: 首页 > news >正文 视频直播免费网站建设官方网站建设 招标公告 news 2025/10/28 1:36:59 视频直播免费网站建设,官方网站建设 招标公告,凌云网络科技有限公司,东莞电子网站建设什么是滑动窗口算法 滑动窗口算法是一种用于解决数组#xff08;或字符串#xff09;中子数组#xff08;或子字符串#xff09;问题的算法。该算法通过维护一个固定大小的窗口#xff08;通常是两个指针#xff09;#xff0c;该窗口在数组上滑动#xff0c;以寻找符…什么是滑动窗口算法 滑动窗口算法是一种用于解决数组或字符串中子数组或子字符串问题的算法。该算法通过维护一个固定大小的窗口通常是两个指针该窗口在数组上滑动以寻找符合特定条件的子数组。算法的基本思想是通过调整窗口的起始和结束位置来遍历整个数组以找到满足特定条件的子数组。这个窗口通常是连续的但具体的实现方式可以根据问题的要求而变化。 滑动窗口算法的一般步骤 滑动窗口算法的一般步骤如下 初始化 定义两个指针通常表示窗口的起始位置left和结束位置right并初始化它们。 滑动窗口 移动右指针直到满足某个条件为止。这个条件可以根据具体问题而定比如找到一个符合要求的子数组或达到某种状态。 调整窗口大小 当右指针移动到某个位置后如果满足了条件尝试缩小窗口大小即移动左指针直到不再满足条件为止。 重复操作 不断重复步骤2和步骤3直到遍历完整个数组。 滑动窗口算法通常用于解决一些优化问题例如在一个数组中找到最短的子数组使得其满足特定的条件或者在一个字符串中找到最短的子串包含目标子串中的所有字符。这种算法的时间复杂度通常较低因为它避免了不必要的重复计算。 滑动窗口算法是如何实现的 下面我会以一个具体问题为例演示如何使用 Java 代码实现滑动窗口算法。我们以「找到字符串中无重复字符的最长子串」为例实现滑动窗口算法。 import java.util.HashMap;public class LongestSubstringWithoutRepeating {public static int lengthOfLongestSubstring(String s) {if (s null || s.length() 0) {return 0;}// 用于存储字符和其在字符串中的位置HashMapCharacter, Integer map new HashMap();int maxLength 0;int left 0;for (int right 0; right s.length(); right) {char currentChar s.charAt(right);// 如果字符已经在窗口中更新左指针的位置if (map.containsKey(currentChar)) {left Math.max(map.get(currentChar) 1, left);}// 更新字符的位置map.put(currentChar, right);// 更新最大长度maxLength Math.max(maxLength, right - left 1);}return maxLength;}public static void main(String[] args) {String input abcabcbb;int result lengthOfLongestSubstring(input);System.out.println(result); // 输出 3对应的无重复字符子串为 abc} }上述代码实现了寻找字符串中无重复字符的最长子串的长度。核心是通过维护一个窗口用 left 和 right 指针表示窗口的左右边界通过遍历字符串不断调整窗口的大小同时利用哈希表记录每个字符最后一次出现的位置以实现快速的查找和更新。 什么是KMP算法 KMPKnuth-Morris-Pratt算法是一种用于在文本串中查找模式串出现位置的字符串匹配算法。它的主要特点是在匹配失败时能够利用已经得到的部分匹配结果避免不必要的比较从而提高匹配效率。 KMP算法的核心思想是构建一个部分匹配表Partial Match Table也称为「next数组」用于指导匹配过程中的跳跃。这个表记录了模式串中每个前缀的最长相等前缀后缀的长度。通过在匹配过程中利用这个表算法能够在匹配失败时迅速调整模式串的位置继续匹配而不用回溯到文本串中的前面位置。 KMP算法的基本步骤 构建部分匹配表 遍历模式串对于每个位置找到最长的相等的前缀后缀的长度并将这个长度记录在部分匹配表中。 匹配过程 在匹配文本串和模式串的过程中当匹配失败时根据部分匹配表中的值调整模式串的位置继续匹配。 KMP算法的时间复杂度是 O(m n)其中 m 是模式串的长度n 是文本串的长度。相比暴力匹配算法的 O(mn) 复杂度KMP算法在处理大规模文本串和模式串时具有更高的效率。 public class KMPAlgorithm {public static int[] buildNext(String pattern) {int[] next new int[pattern.length()];int j 0;for (int i 1; i pattern.length(); i) {while (j 0 pattern.charAt(i) ! pattern.charAt(j)) {j next[j - 1];}if (pattern.charAt(i) pattern.charAt(j)) {j;}next[i] j;}return next;}public static int kmpSearch(String text, String pattern) {int[] next buildNext(pattern);int j 0;for (int i 0; i text.length(); i) {while (j 0 text.charAt(i) ! pattern.charAt(j)) {j next[j - 1];}if (text.charAt(i) pattern.charAt(j)) {j;}if (j pattern.length()) {return i - j 1; // 匹配成功返回起始位置}}return -1; // 未找到匹配}public static void main(String[] args) {String text ABABCABAB;String pattern ABAB;int result kmpSearch(text, pattern);System.out.println(result); // 输出 2} }这个示例中buildNext 方法用于构建部分匹配表而 kmpSearch 方法则实现了KMP算法的匹配过程。 二者有何区别 应用场景和实现原理有一些不同 滑动窗口算法 应用场景 主要用于解决子串问题即在一个字符串中找到一个连续的子串满足特定的条件。实现原理 通过维护一个可变大小的窗口该窗口在字符串上滑动同时根据问题的要求调整窗口的大小。该算法通常通过两个指针一个指向窗口的起始位置另一个指向窗口的结束位置来遍历整个字符串。示例应用 最小覆盖子串、最长无重复字符子串等问题。 KMP算法Knuth-Morris-Pratt算法 应用场景 主要用于在一个文本串中查找一个模式串的出现位置。实现原理 KMP算法利用了模式串中已匹配的信息避免不必要的回溯。它通过构建一个部分匹配表Partial Match Table来指导匹配过程中的跳跃。这个表记录了模式串每个前缀的最长相等前缀后缀的长度。示例应用 在文本编辑器中查找文本中的关键字等。 区别 问题类型 滑动窗口算法主要用于子串问题而KMP算法主要用于模式匹配问题。实现原理 滑动窗口算法通过维护一个窗口在字符串上的滑动来解决问题而KMP算法利用构建的部分匹配表来优化模式匹配过程。应用场景 滑动窗口算法更适用于连续的子串匹配问题而KMP算法更适用于在文本中查找模式串的位置。 总体而言虽然滑动窗口算法和KMP算法有不同的应用场景但它们都是在字符串处理领域中解决特定问题的有效工具。选择使用哪种算法取决于具体的问题需求。 文章转载自: http://www.morning.lcwhn.cn.gov.cn.lcwhn.cn http://www.morning.lhzqn.cn.gov.cn.lhzqn.cn http://www.morning.nppml.cn.gov.cn.nppml.cn http://www.morning.rntgy.cn.gov.cn.rntgy.cn http://www.morning.kwnnx.cn.gov.cn.kwnnx.cn http://www.morning.lkcqz.cn.gov.cn.lkcqz.cn http://www.morning.pwksz.cn.gov.cn.pwksz.cn http://www.morning.mcgsq.cn.gov.cn.mcgsq.cn http://www.morning.tzkrh.cn.gov.cn.tzkrh.cn http://www.morning.wzwyz.cn.gov.cn.wzwyz.cn http://www.morning.kbqqn.cn.gov.cn.kbqqn.cn http://www.morning.hcsnk.cn.gov.cn.hcsnk.cn http://www.morning.jcyrs.cn.gov.cn.jcyrs.cn http://www.morning.bpmtj.cn.gov.cn.bpmtj.cn http://www.morning.wrtpk.cn.gov.cn.wrtpk.cn http://www.morning.bbyqz.cn.gov.cn.bbyqz.cn http://www.morning.msmtf.cn.gov.cn.msmtf.cn http://www.morning.fqmbt.cn.gov.cn.fqmbt.cn http://www.morning.c7500.cn.gov.cn.c7500.cn http://www.morning.kgrwh.cn.gov.cn.kgrwh.cn http://www.morning.qsy36.cn.gov.cn.qsy36.cn http://www.morning.llcgz.cn.gov.cn.llcgz.cn http://www.morning.gczqt.cn.gov.cn.gczqt.cn http://www.morning.qphcq.cn.gov.cn.qphcq.cn http://www.morning.sqfrg.cn.gov.cn.sqfrg.cn http://www.morning.rnxs.cn.gov.cn.rnxs.cn http://www.morning.ybqlb.cn.gov.cn.ybqlb.cn http://www.morning.ykkrg.cn.gov.cn.ykkrg.cn http://www.morning.wqbfd.cn.gov.cn.wqbfd.cn http://www.morning.ksgjy.cn.gov.cn.ksgjy.cn http://www.morning.mmqng.cn.gov.cn.mmqng.cn http://www.morning.brcdf.cn.gov.cn.brcdf.cn http://www.morning.mwnch.cn.gov.cn.mwnch.cn http://www.morning.tbhlc.cn.gov.cn.tbhlc.cn http://www.morning.wlgpz.cn.gov.cn.wlgpz.cn http://www.morning.xwlmr.cn.gov.cn.xwlmr.cn http://www.morning.gjmll.cn.gov.cn.gjmll.cn http://www.morning.rpdmj.cn.gov.cn.rpdmj.cn http://www.morning.pzbjy.cn.gov.cn.pzbjy.cn http://www.morning.rylr.cn.gov.cn.rylr.cn http://www.morning.clpfd.cn.gov.cn.clpfd.cn http://www.morning.dzqr.cn.gov.cn.dzqr.cn http://www.morning.gqcd.cn.gov.cn.gqcd.cn http://www.morning.fgkrh.cn.gov.cn.fgkrh.cn http://www.morning.wzwpz.cn.gov.cn.wzwpz.cn http://www.morning.slfmp.cn.gov.cn.slfmp.cn http://www.morning.dnmzl.cn.gov.cn.dnmzl.cn http://www.morning.bfsqz.cn.gov.cn.bfsqz.cn http://www.morning.jfmjq.cn.gov.cn.jfmjq.cn http://www.morning.rfhm.cn.gov.cn.rfhm.cn http://www.morning.mbrbk.cn.gov.cn.mbrbk.cn http://www.morning.skdrp.cn.gov.cn.skdrp.cn http://www.morning.nffwl.cn.gov.cn.nffwl.cn http://www.morning.syhwc.cn.gov.cn.syhwc.cn http://www.morning.pbmg.cn.gov.cn.pbmg.cn http://www.morning.fksyq.cn.gov.cn.fksyq.cn http://www.morning.hphfy.cn.gov.cn.hphfy.cn http://www.morning.bflwj.cn.gov.cn.bflwj.cn http://www.morning.rgsgk.cn.gov.cn.rgsgk.cn http://www.morning.zztmk.cn.gov.cn.zztmk.cn http://www.morning.wjplr.cn.gov.cn.wjplr.cn http://www.morning.fypgl.cn.gov.cn.fypgl.cn http://www.morning.wdshp.cn.gov.cn.wdshp.cn http://www.morning.xwbld.cn.gov.cn.xwbld.cn http://www.morning.clccg.cn.gov.cn.clccg.cn http://www.morning.fqcdh.cn.gov.cn.fqcdh.cn http://www.morning.msbct.cn.gov.cn.msbct.cn http://www.morning.chxsn.cn.gov.cn.chxsn.cn http://www.morning.rkdzm.cn.gov.cn.rkdzm.cn http://www.morning.xbdrc.cn.gov.cn.xbdrc.cn http://www.morning.gxfpk.cn.gov.cn.gxfpk.cn http://www.morning.lwtld.cn.gov.cn.lwtld.cn http://www.morning.wrkhf.cn.gov.cn.wrkhf.cn http://www.morning.jbtzx.cn.gov.cn.jbtzx.cn http://www.morning.smhtg.cn.gov.cn.smhtg.cn http://www.morning.lhhdy.cn.gov.cn.lhhdy.cn http://www.morning.gbsby.cn.gov.cn.gbsby.cn http://www.morning.drqrl.cn.gov.cn.drqrl.cn http://www.morning.qgmbx.cn.gov.cn.qgmbx.cn http://www.morning.hxrg.cn.gov.cn.hxrg.cn 查看全文 http://www.tj-hxxt.cn/news/255373.html 相关文章: 网站价钱给城市建设提议献策的网站 合肥建站公司seo网站推广与seo的区别 如何用flashfxp通过ftp访问网站服务器下载网站代码数字营销的4个特征 用python做网站前端wordpress搬家出现404 厦门成品网站dw 做的网站能用吗 做网站要求电脑配置赣州那里有做网站的公司 贵州网站优化专用于做网站公司 四川建设设计公司网站关镇铨装修到底怎样 视频网站设计论文淄博云网信息技术有限公司 网站怎么加ico国内最好的网站建设 女装网站建设项目可行性分析表wordpress 头像不见了 注册网站怎么开发wordpress主题图片路径 建设通网站联系电话wordpress搜索提示 哪些网站百度收录快网站如何备案icp备案 贵州住房与城乡建设部网站阿里云网站建设程序 做网站的背景怎么做做网站上哪买空间 新手网站建设网站建设实施计划包括 网站标题应该怎么做SEO优化企业品牌网站建设类型 网站模块设计自己做网站项目 驻马店河南网站建设服务器做网站教程 上海备案证查询网站查询网站查询上海网站建设caiyiduo 电商网站开发 文献综述成都多语种网站建设 长沙臻钬建站活动方案苏州网络公司排行 网站谁建设的产品包装设计网站 设计类投稿网站突然爆了长沙致歉 环保业网站建设的策划seo页面优化技术 深圳网页设计网站制作微信公众号设计方案 如何用模板做网站视频网站策划主要工作是什么 南京网站设计制作建设大型的企业网站费用 关键词优化网站排名医院网站开发方案