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

怎么查网站关键词密度北京专门做网站的公司

怎么查网站关键词密度,北京专门做网站的公司,国外的网页制作网站,c2c的含义分别是什么来自acwing核心优化思想在于通过一个lps数组来反映部分重复匹配的位置信息,能够从头前进好几位达到快捷搜索,减少传统暴力从头只前进一位遍历带来的冗余。难点主要在于lps数组的构建思路当我们要在ababa中找aba时当下标遍历到2,找到第一个匹配…

来自acwing

核心优化思想在于通过一个lps数组来反映部分重复匹配的位置信息,能够从头前进好几位达到快捷搜索,减少传统暴力从头只前进一位遍历带来的冗余。难点主要在于lps数组的构建思路

当我们要在ababa中找aba时

当下标遍历到2,找到第一个匹配点,再寻找第二个匹配点时暴力方法是将母串的下标进一位,也就是在babca中再遍历查找aba,此时发现第一个字母就不匹配,再将母串下标进一位。这只是一个便于理解的情况,倘若数据量巨大,这种遍历的时间复杂度是相当高的。

对此,我需要在第一次匹配成功,直接定位到母串的第二个a,也就是穿越到下标为2进行开头遍历,对比暴力方法这一方式无疑是更快得多的

对此我需要记录这些完全相同的类似于‘a’这种重复出现的部分

也就来到了构建lps数组的环节,它的出现是为了记录子串中每个位置的最长公共前后缀长度

对于aba,我们发现第一个a和自己能匹配但是作为开头无意义,对于b,因为a!=b,匹配不到,对于第三个a,能够和开头a匹配,我们记录为1,同时引入长度概念,对于子串的这种单个字符的匹配,长度length记录为1,此时我们的lps数组为[0,0,1]

当我们通过这个数组和长度信息再进行遍历时,如何将子串的开头定位到母串的2下标位置呢,而且这里存在一个问题就是我们已经找到第一个能够匹配的位置了,我们下一次匹配又要怎么设置呢

当我们找到其中一个字串位置时,母串下标j是需要返回的,我们如何将j直接移动到a第二次出现的位置呢。

事实上kmp并不是这样的返回思路,而是通过lps了解到子串的前后缀的相同性,不通过重新遍历母串下标而是将子串下标回退进行继续检索。

具体分析 "ababa" 中查找 "aba"

让我们仔细分析这个例子:

  1. 第一次匹配完成后

    • 母串指针 i = 3 (指向第4个字符 'b')

    • 子串指针 j = 3 (表示已完全匹配)

    • 记录匹配位置 0

  2. KMP的智能移动

    • KMP通过LPS数组知道子串"aba"的前缀和后缀有重叠

      • 前缀"a"和后缀"a"相同

      • LPS[2] = 1 表示最长公共前后缀长度为1

    • 所以算法将子串向右移动 3 - 1 = 2 位:(也就是将子串从b开始与母串进行比对)

      文本: a b a b a
      模式:     a b a
      

KMP算法的移动量是由LPS数组决定的:

  • 移动量 = 已匹配长度 - LPS[已匹配长度-1]

  • 这确保了不会错过任何可能的匹配

在"aba"的例子中:

  • 已匹配长度 = 3

  • LPS[2] = 1

  • 移动量 = 3 - 1 = 2

KMP算法的精妙之处就在于它利用模式串本身的信息(LPS数组)来做出最优的移动决策,既保证了正确性(不会错过任何匹配),又保证了效率(移动尽可能远但不会太远)。

def lpsestablish(parttern):m=len(parttern)lps=[0]*mlength=0i=1while i<m:if parttern[i]==parttern[length]:length+=1lps[i]=lengthi+=1else:if length!=0:length=lps[length-1]else:lps[i]=0i+=1return lpsdef kmp_search(text,parttern):n=len(text)m=len(parttern)if m==0:return []if n==0 or m>n:return []lps=lpsestablish(parttern)matches=[]i=0j=0while i<n:if parttern[j]==text[i]:i+=1j+=1if j==m:matches.append(i-j)j=lps[j-1]else:if j!=0:j=lps[j-1]else:i+=1return matchesdef main():import sysdata=sys.stdin.read().splitlines()if not data:return n=int(data[0].strip())parttern=data[1].strip()m=int(data[2].strip())text=data[3].strip()matches=kmp_search(text,parttern)print(' '.join(map(str,matches)))if __name__=='__main__':main()

http://www.dtcms.com/a/444998.html

相关文章:

  • 湘潭网站建设优化技术wordpress代码实现网站地图
  • flash网站模板修改湖南高端网站制作公司
  • 遵义住房和城乡建设局网站安阳区号0372
  • 北沙滩网站建设做网络销售都做什么网站
  • 烟台做网站哪里好网站改版301设置
  • 仲恺建设局网站学网站建设基础
  • 保亭县住房城市建设局网站免费制作开业宣传视频
  • wap购物网站源码重庆十大外贸公司排名
  • 公司为什么要网站备案大学网站建设评比考核办法
  • 制作华为手机网站建设规划书sem竞价推广公司
  • 建设银行给税对账在什么网站网站图片特效代码
  • 用糖做的网站成都网站备案
  • 哪些网站做的比较好佛山市南海区交通建设网站
  • 遵义市营商环境建设局网站长宁区网站制作设计
  • 四川建设网站做简历用的网站
  • 携程旅游网站官网网站管理员密码忘记了
  • 网站做用户登录广州哪里能看海
  • 福建中海建设有限公司网站制作视频剪辑
  • 如何知道网站流量wordpress文章置顶插件:classic posts
  • seo站长综合查询横沥网站制作招聘
  • 什么网站是solr做的专业网站优化报价
  • wordpress 文件夹沈阳网页关键词优化
  • 沈阳做网站找思路广州交易中心官网
  • 外贸网站如何做的好小型活动策划方案
  • 网站维护工程师工资老板企业管理培训课程
  • 哪些网站可以做微信同声传译公司网站建设
  • 网站建设公司电话销售话术做网站的语言都有什么
  • 上海定制网站开发营销推广上海搭建工厂
  • 什么网站可以做微招聘seo综合查询平台
  • 曲靖网站微信建设网站建设北京个人