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

茂名百度搜索网站排名公司网页制作流程

茂名百度搜索网站排名,公司网页制作流程,网站建设宣传 mp4,seo对企业网站运营有何意义本文针对计算机统考408的数据结构复习需求,系统解析KMP算法的核心原理与实现要点。​ KMP算法的核心思想 当主串与模式串匹配失败时,利用已匹配部分的最长公共前后缀长度,确定模式串滑动距离,避免主串指针回溯。时间复杂度&…

本文针对计算机统考408的数据结构复习需求,系统解析KMP算法的核心原理与实现要点。​ 

KMP算法的核心思想

当主串与模式串匹配失败时,利用已匹配部分的最长公共前后缀长度,确定模式串滑动距离,避免主串指针回溯。时间复杂度:​O(n+m)

方便理解我们先来看一个例子:

本次匹配的模式串为abaabc,主串在扫描前未知

匹配到下标3失败时,可以确定主串前三位为aba,第4为不是a 

很明显,我们将子串向右移一位是不可能匹配的, 这样一开始就匹配失败了,而我们向右移动两位,有可能可以匹配成功,因此我们令j=1继续匹配。由j=3匹配失败后令j=1,构建next数组(表示该处字符不匹配时应该回溯到的字符的下标),令next[3]=1。

构建next数组 (手算)

 假设匹配到第i位失败了,说明主串和模式串前i-1位是相同的,设next[i] = j (n>0)。

由左边的图可知:S[0]=T[0],S[1]=T[1],...,S[n-1]=T[i-1]

由右边的图可知:S[i-j]=T[0],...,S[i-1]=T[j-1]

联立两式,得:T[0]=T[i-j],T[1]=T[i-j+1],...,T[j-1]=T[i-1]

简单来说,next[j] = 前 j - 1 位的最长相等前后缀长度。

拿刚才模式串abaabc举例

下标i前i位子串后i位子串最长相等前后缀长度next[i]
0空(首字符失配)-1
100
2ab00
3a, aba, ba11
4a, ab, abaa, ba, baa11
5a, ab, aba, abaab, ab, aab, baab22

最终next数组中的元素应该是{-1, 0, 0, 1, 1, 2}。

理解上面的思路,接下来用代码来实现求模式串的next数组

匹配字符串

假设此时已经获得next数组,接下来进行匹配,不理解可以画个草图模拟一下代码。

// 字符串匹配,返回匹配的首字母位置
int kmpSearch(const string& S, const string& T, int next[]) {int i = 0, j = 0;                        // i为主串的指针,j为模式串指针int lenS = S.size(), lenT = T.size();while(i < lenS && j < lenT) {if(j == -1 || s[i] == p[j]) {        // 如果模式串无法右移或者单词匹配成功i++;                             // 两指针都往右移一位,继续匹配j++;}else j = next[j];                      // 匹配失败,回退j指针}if(j == lenT) return i - j;              // 模式串全部匹配成功,输出首字母位置return -1;
}

构建next数组 (机算)

本质上与匹配字符串的操作大差不差,核心跳转逻辑分三种情况:

1. j在初始位置-1 → 重置为0开始匹配
2. 字符匹配 → 同步前进
3. 字符不匹配 → 跳转到前一个匹配位置 

void get_next(const string& T, int next[]) {int i = 0, j = -1;next[0] = -1;while (i < n - 1) {if (j == -1 || p[i] == p[j]) { j++;    i++;    next[i] = j;                 // 前后缀相等的最大值} else {j = next[j];                 // 回退寻找可能匹配的位置}}
}

结语

KMP算法通过预处理模式串的next数组,将匹配过程中的无效比较降至最低,是空间换时间的经典设计。备考时需重点掌握next数组的手算推导​(最长相等前后缀计算),可以结合408真题巩固练习。

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

相关文章:

  • 深圳建设信息网站官网网页设计与网站开发
  • 住房和城乡建设部执法网站seo推广有哪些公司
  • 创新网站建设工作推广软件哪个好
  • 建设网站 莆田长春百度网站快速排名
  • 创建了一个网站 怎样做系统测试seo课程简介
  • 怎样做网站海报百度查重工具
  • 海口网站建设哪家专业谷歌外贸平台叫什么
  • 服务器512m内存做网站打开网址资料网站
  • 威县做网站哪儿便宜现在推广平台哪家最好
  • 期货网站开发app拉新推广怎么做
  • 网站中链接怎么做的网站管理和维护的主要工作有哪些
  • 永兴房产网站好的营销网站设计公司
  • 养老保险2023价格表seo课程心得体会
  • 软件定制合同温州seo排名公司
  • 南昌网站建设方案服务如何做好产品网络推广
  • 曲阜建设局网站营销软文范例大全300字
  • 北京网站建设在线今日新闻热点大事件
  • 大兴安岭建设局网站张北网站seo
  • 百度网址大全网址导航网络营销的seo是做什么的
  • 网上投注网站建设收录查询工具
  • 网站建设文化哪家好关键词seo深圳
  • 中国住房和建设部网站免费二级域名查询网站
  • 网站大多用源码来做吗营销推广网站推广方案
  • 2023年推广网站女教师遭网课入侵直播
  • 左侧导航栏网站地推一手项目平台
  • 哈尔滨网站建设nsstd.com网站设计与制作教程
  • 网站建设服务器的选择方案有产品推广介绍怎么写
  • 简述电子商务网站建设方案中国职业培训在线平台
  • 做网站的公司cnfg简述seo
  • 有哪些网站有做网页用的小图片网上教育培训机构哪家好