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

新沂网站开发wordpress搜索引擎

新沂网站开发,wordpress搜索引擎,安卓商店,网站友情链接模块KMP算法 全称Knuth-Morris-Pratt算法,是一种字符串匹配算法。该算法的目的是在一个文本串S内查找一个模式串P的出现位置。 KMP算法的核心思想是利用模式串自身的特性来避免不必要的字符比较。算法通过构建一个部分匹配表(也称为next数组)&a…

KMP算法

全称Knuth-Morris-Pratt算法,是一种字符串匹配算法。该算法的目的是在一个文本串S内查找一个模式串P的出现位置。

KMP算法的核心思想是利用模式串自身的特性来避免不必要的字符比较。算法通过构建一个部分匹配表(也称为next数组),来记录模式串中每个字符之前的前缀子串和后缀子串的最长公共长度。根据这个表,算法可以通过调整模式串的起始位置来跳过不需要比较的字符,从而提高匹配的效率。

KMP算法的具体步骤如下:

1. 预处理模式串P,构建部分匹配表next数组;
2. 设置两个指针i和j,分别指向文本串S和模式串P的起始位置;
3. 逐个比较S[i]和P[j],如果相等,则i和j同时后移;
4. 如果不相等,根据next数组跳过一部分字符,将j更新为next[j],同时i保持不变;
5. 重复步骤3和步骤4,直到找到一个匹配或者S已经遍历完。

KMP算法的时间复杂度为O(m+n),其中m和n分别是文本串和模式串的长度。相比于暴力匹配算法的时间复杂度O(m*n),KMP算法能够在较短的时间内找到匹配位置。

题目描述

给出两个字符串 s1​ 和 s2​,若 s1​ 的区间 [l,r] 子串与 s2​ 完全相同,则称 s2​ 在 s1​ 中出现了,其出现位置为 l。
现在请你求出 s2​ 在 s1​ 中所有出现的位置。

定义一个字符串 s 的 border 为 s 的一个非 s 本身的子串 t,满足 t 既是 s 的前缀,又是 s 的后缀。
对于 s2​,你还需要求出对于其每个前缀 s′ 的最长 border t′ 的长度。

输入格式

第一行为一个字符串,即为 s1​。
第二行为一个字符串,即为 s2​。

输出格式

首先输出若干行,每行一个整数,按从小到大的顺序输出 s2​ 在 s1​ 中出现的位置。
最后一行输出 ∣s2​∣ 个整数,第 i 个整数表示 s2​ 的长度为 i 的前缀的最长 border 长度。

输入输出样例

输入 #1复制

ABABABC
ABA

输出 #1复制

1
3
0 0 1 

说明/提示

样例 1 解释

对于 s2​ 长度为 3 的前缀 ABA,字符串 A 既是其后缀也是其前缀,且是最长的,因此最长 border 长度为 1。

数据规模与约定

本题采用多测试点捆绑测试,共有 3 个子任务。

Subtask 1(30 points):∣s1​∣≤15,∣s2​∣≤5。

Subtask 2(40 points):∣s1​∣≤10^4,∣s2​∣≤10^2。

Subtask 3(30 points):无特殊约定。

对于全部的测试点,保证 1≤∣s1​∣,∣s2​∣≤10^6,s1​,s2​ 中均只含大写英文字母。

#include<stdio.h> 
#include<string.h> 
char a[1000010],b[1000010];
int s[1000010];
int main()
{scanf("%s",a+1);scanf("%s",b+1);int c=strlen(a+1),d=strlen(b+1);int i,j=0;for(i=2;i<=d;i++){while(j>0&&b[i]!=b[j+1]) j=s[j];if(b[i]==b[j+1]) j++;s[i]=j;}j=0;for(i=1;i<=c;i++){while(j>0&&a[i]!=b[j+1]) j=s[j];if(a[i]==b[j+1]) j++;if(j==d) printf("%d\n",i-d+1),j=s[j];}for(int i=1;i<d;i++)printf("%d ",s[i]);printf("%d",s[d]);
}

http://www.hyszgw.com/news/31710/

相关文章:

  • 网站收录和没收录区别seo推广公司教程
  • 教育培训的网站建设建设银行公积金预约网站
  • 平面设计兼职网站兰州企业建设网站
  • qq网站推广代码威海设计网站的
  • 网站建设考虑如何做自己的在线作品网站
  • 做网站都需要什么wordpress 关键字插件
  • 建筑行业资讯网站wordpress 培训插件
  • 那个网站做的好网站开发基本语言
  • 怎样做废旧网站应用商店正版下载
  • 网站开发运营新人要注意什么做公司官网需要多少钱
  • 网站设计大概价格wordpress中文下载
  • 南京建设网站的公司福建福州建设局网站
  • php 企业网站多少钱网站建设属于什么部门
  • 上海网站制作的淘宝网站建设 深圳
  • 听小说的网站哪个好郑州网站设计 郑州网站开发
  • 服务器搭建网站步骤视频合肥网站推广公司
  • 泰州企业网站建站模板河南seo
  • 怎样破解网站后台密码什么网站做招聘效果好
  • 租用网站服务器广东企业网站seo报价
  • 天津医疗行业网站建设昆明建设网站制作
  • 大学班级网站建设北京 工业网站建设公司价格
  • 怎么优化网站排名网速测速
  • 郴州网站建设公司哪里有制作网站软件手机
  • 延庆城市建设网站网络运维与网络安全工程师
  • 观澜小学 网站建设凡科手机版登录
  • 外贸营销型网站建设的技巧团购模板网站
  • 专业的丹阳网站建设企业形象设计vi手册
  • 榆次做网站制作企业网站怎么做
  • 外贸公司 如何做公司网站wordpress在线安装插件在哪里
  • dede双语网站装修平台排行榜前十名