当前位置: 首页 > wzjs >正文

在什么网站可以自承包活来做软文外链代发

在什么网站可以自承包活来做,软文外链代发,做网站到a5卖站赚钱,网络运维工程师需要什么证KMP算法(Knuth-Morris-Pratt算法)是一种用于字符串匹配的高效算法。它的核心思想是通过预处理模式字符串(pattern),构建一个部分匹配表(也称为“失败函数”或“前缀函数”),从而在匹…

KMP算法(Knuth-Morris-Pratt算法)是一种用于字符串匹配的高效算法。它的核心思想是通过预处理模式字符串(pattern),构建一个部分匹配表(也称为“失败函数”或“前缀函数”),从而在匹配过程中避免不必要的回溯。KMP算法的时间复杂度为O(n + m),其中n是文本字符串的长度,m是模式字符串的长度。

KMP算法的核心思想

  1. 部分匹配表(Prefix Table)

    • 部分匹配表记录了模式字符串中每个位置的最长相同前缀和后缀的长度。

    • 例如,对于模式字符串"ABABC",其部分匹配表为[0, 0, 1, 2, 0]

  2. 匹配过程

    • 在匹配过程中,当字符不匹配时,KMP算法利用部分匹配表跳过一些字符,避免从头开始匹配。

KMP算法的步骤

  1. 构建部分匹配表

    • 初始化一个数组prefix,长度为模式字符串的长度。

    • 使用两个指针,一个指向模式字符串的开头(i),另一个用于遍历模式字符串(j)。

    • 如果字符匹配,prefix[j] = i + 1,并移动两个指针。

    • 如果不匹配,且i > 0,则将i回退到prefix[i - 1]

    • 如果不匹配,且i == 0,则prefix[j] = 0,并移动j

  2. 匹配文本字符串

    • 使用两个指针,一个指向文本字符串(i),另一个指向模式字符串(j)。

    • 如果字符匹配,移动两个指针。

    • 如果不匹配,且j > 0,则将j回退到prefix[j - 1]

    • 如果不匹配,且j == 0,则移动i

public class KMP {// 计算部分匹配表(前缀函数)private static int[] computePrefix(String pattern) {int[] prefix = 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 = prefix[j - 1]; // 回退到前一个匹配位置}if (pattern.charAt(i) == pattern.charAt(j)) {j++; // 匹配成功,移动 j}prefix[i] = j; // 记录当前位置的最长前缀}return prefix;}// KMP 搜索算法public static int kmpSearch(String text, String pattern) {int[] prefix = computePrefix(pattern);int j = 0; // 指向模式字符串for (int i = 0; i < text.length(); i++) {while (j > 0 && text.charAt(i) != pattern.charAt(j)) {j = prefix[j - 1]; // 回退到前一个匹配位置}if (text.charAt(i) == pattern.charAt(j)) {j++; // 匹配成功,移动 j}if (j == pattern.length()) {return i - j + 1; // 返回匹配的起始位置}}return -1; // 未找到匹配}public static void main(String[] args) {String text = "ABABDABACDABABCABAB";String pattern = "ABABCABAB";int index = kmpSearch(text, pattern);if (index != -1) {System.out.println("Pattern found at index: " + index);} else {System.out.println("Pattern not found.");}}
}

示例输出

对于文本字符串 "ABABDABACDABABCABAB" 和模式字符串 "ABABCABAB",输出结果为:

Pattern found at index: 10

 

优点

  • 高效:KMP算法避免了不必要的回溯,提高了匹配效率。

  • 适用性广:适用于各种字符串匹配场景,尤其是模式字符串较长的情况。

缺点

  • 实现复杂:相比暴力匹配算法,KMP算法的实现较为复杂。

  • 空间开销:需要额外的空间存储部分匹配表。

KMP算法是字符串匹配领域的重要算法,理解其原理和实现对于解决相关问题非常有帮助。

http://www.dtcms.com/wzjs/64243.html

相关文章:

  • 写作网站的文风外链发布网站
  • 公众平台如何做网站cpm广告联盟平台
  • 如果做动态网站开发 以下营销软文范文
  • 采购公告 校园网站建设百度搜索简洁版网址
  • 佛山网络公司培训谷歌seo建站
  • 网站开发证书要求seo诊断工具
  • 费县做网站编程培训机构排名前十
  • 教育网网站建设规范网络营销企业有哪些公司
  • html做的网页怎么变成网站网页设计的流程
  • 山东高端网站建设wang搜索引擎营销的案例有哪些
  • 杭州企业网站搭建广州seo推广服务
  • wordpress页面视频搜索引擎网站推广如何优化
  • 音乐应用网站模板网店推广培训
  • 校园网站建设系统设计什么是优化师
  • 专业做俄语网站建设google服务框架
  • 如何查到网站是谁做的网站seo入门基础教程书籍
  • 外文网站做t检验分析列举常见的网络营销工具
  • 做淘客网站需要什么小学生简短小新闻摘抄
  • 建筑网挂靠官网澳门seo关键词排名
  • 做网站推广有哪些公司如何制作自己的网站?
  • 网站域名怎么修改吗好搜自然seo
  • 仅有网站做app线下引流推广方法
  • 公司简历模板范文填写网络关键词优化软件
  • 检察门户网站建设自查报告互联网公司排名100强
  • 东莞网络营销推广公司厦门seo优化推广
  • 网站建设课程设计报告图文百度ocpc怎么优化
  • 个人做房产网站班级优化大师官网
  • 网站界面设计的表现营销型网站开发公司
  • 服装网站建设比较好昆明seo培训
  • 网站没被百度收录百度官方网站首页