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

制作软件的手机软件厦门关键词排名seo

制作软件的手机软件,厦门关键词排名seo,网站开发验收报告模板,教你做企业网站假设现在有如下场景,有一字符串abcdefg,有另一字符串efg,我们该如何快速从字符串中寻找其子串呢? 不难想到我们有一个显而易见的算法,可以先从主串的第一位开始遍历,将a与e比较,此处明显不匹配…

假设现在有如下场景,有一字符串abcdefg,有另一字符串efg,我们该如何快速从字符串中寻找其子串呢?

不难想到我们有一个显而易见的算法,可以先从主串的第一位开始遍历,将a与e比较,此处明显不匹配,继续讲b与e比较,不匹配,继续一直跳过,直到e和e匹配,我们就将子串和主串各自往下移一位。然后发现f和f是匹配的(假如此处f不匹配会怎么样?例如此时主串为abcdeug,子串不变。那么e和e匹配,但是u和f不匹配,此时就将e和u再次匹配,显然此处也是不匹配的,就继续向下知道一直合适位置。

显然这个算法十分复杂,每次都要进行重复的便利,那么有什么办法可以减少字符串匹配的次数呢?我们有如下场景:

主串:aaaaaaaaaab 子串:aaab,如果按照上面所述的方法,这个匹配显然得每次都进行到子串的最后一位然后匹配失败,再次进行匹配,但是仔细一想,每次都匹配过a了,就是已经做过很多次正确的匹配最后一次匹配失败,那么按理来说我们可以跳过几个已经匹配过的数字然后继续进行匹配?那么该跳过几个字符呢?此时我们就引入了kmp算法中的next数组,这个数组存储了你应该跳过的字符的个数。我们在匹配失败的时候会看最后一个匹配的字符所对应的next数值。

我们先忽略next数组的计算,假设我们已知next数组的大小该怎么进行计算呢?以下是代码实现:
 

next数组对于不同的字符串显然有不同的数组,所以我们该思考怎么进行next数组的计算。

假设有如下场景

abbabbababaaababaaa

abbabaababaa,此处我们在第六位发现不匹配。在第六位之前我们有字符串abbab,对于这个2字符串来说,我们可以找到两个匹配的公共前后缀ab,那么此时kmp算法就教我们叫子串后移到

abbabbababaaababaaa

      abbabaababaa,注意看此处的对齐。将前面三个字符跳过了,此时我们可以在进行一次刚才的操作,再次匹配再次跳过。。。以此类推。(前后缀不能等于子串长度不然没有意义),那么此处next数组的大小为最大公共前后缀长度加1,第一位因为前面没有数字固定为0.

例如abaaab,0,1,1,此时为aba,所以为2,再后abaa,2,abaaa,2,abaaab,3,所以next数组为0112223.

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

相关文章:

  • 沈阳企业网站设计制作深圳新闻最新事件
  • 北京哪家做网站和网络推广好的nba最新交易信息
  • 免费网站源码做关键词优化的公司
  • 如何查网站点击量手机端关键词排名免费软件
  • 域名购买 万网seo软件
  • 设计之家图片欣赏seo搜索引擎优化原理
  • 网站备案要先怎么做成都网站seo诊断
  • 电商网站设计原则5188关键词挖掘
  • 婚庆公司网站建设得多少钱优秀软文范例
  • 上海网站邮箱制作搜狐财经峰会
  • 国外优秀的网站建设公司国际新闻头条
  • 黄冈最专业的公司网站建设平台2022年度关键词
  • java开发做网站网络零售的优势有哪些
  • 大连模板网站制作多少钱重庆优化seo
  • 招聘网站设计方案网站制作的基本流程
  • 设计网站广告标语百度引流推广费用多少
  • 企业企业网站建设百度seo文章
  • 商务互联 网站干净无广告的搜索引擎
  • php网站服务器怎么来掌门一对一辅导官网
  • 如何做自己的公司网站友情链接赚钱
  • 最少的钱做网站苏州网站关键词优化推广
  • 网站建设需求量百度网盘网页版登录
  • 济宁做网站优化周口网络推广哪家好
  • 北京网站建设站建设电子商务营销模式有哪些
  • 京津冀协同发展的首要任务有宁波seo关键词优化
  • 松原网站制作茂名网站建设制作
  • 毕业设计网站开发最新新闻头条
  • 北京网站建设公司案例搜狗收录提交入口
  • 学院路网站建设短视频推广app
  • 网站源码建站视频搜索引擎平台有哪些