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

网站字体样式/网站数据分析

网站字体样式,网站数据分析,怎么网站是谁做的,陕西有没有做网站好的公司转载于https://www.cnblogs.com/-citywall123/p/11688576.html kmp算法是解决单模匹配问题的算法,难点在于求next[]数组 求next[]数组:对于子串的所有前缀子串的最长公共前后缀的长度,就是next[]数组的值 首先,要了解两个概念&a…

转载于https://www.cnblogs.com/-citywall123/p/11688576.html
kmp算法是解决单模匹配问题的算法,难点在于求next[]数组

求next[]数组:对于子串的所有前缀子串的最长公共前后缀的长度,就是next[]数组的值

首先,要了解两个概念:“前缀"和"后缀”。 "前缀"指除了最后一个字符以外,一个字符串的全部头部组合;"后缀"指除了第一个字符以外,一个字符串的全部尾部组合。如下图所示:

下面再以”ABCDABD”为例,进行介绍:

”A”的前缀和后缀都为空集,共有元素的长度为0;

”AB”的前缀为[A],后缀为[B],共有元素的长度为0;

”ABC”的前缀为[A, AB],后缀为[BC, C],共有元素的长度0;

”ABCD”的前缀为[A, AB, ABC],后缀为[BCD, CD, D],共有元素的长度为0;

”ABCDA”的前缀为[A, AB, ABC, ABCD],后缀为[BCDA, CDA, DA, A],共有元素为”A”,长度为1;

”ABCDAB”的前缀为[A, AB, ABC, ABCD, ABCDA],后缀为[BCDAB, CDAB, DAB, AB, B],共有元素为”AB”,长度为2;

”ABCDABD”的前缀为[A, AB, ABC, ABCD, ABCDA, ABCDAB],后缀为[BCDABD, CDABD, DABD, ABD, BD, D],共有元素的长度为0。

eg:主串为cbbbaababac 子串为ababac

初始化next[0]=-1;
子串的最长公共前后缀长度

a -->0 next[1]=0 a的前缀为空,后缀也为空,共有元素的长度为0

ab -->0 next[2]=0 ab前缀为[a],后缀为[b],共有元素的长度为0

aba -->1 next[3]=1 前缀为[a,ab],后缀为[a,ba],共有元素的长度为1

abab -->2 next[4]=2 前缀为[a,ab,aba],后缀为[b,ab,bab],共有元素的长度为2

ababa -->3 next[5]=3 前缀为[a,ab,aba,abab],后缀也为[a,ba,aba,baba],共有元素的长度为3

next[i]数组的作用是在当子串字母s[i]在和主串字母p[j]失配的时候,next[i]数组提供一个值,子串整体移动( i-next[i] )个位置,继续用s[next[i]]去和主字母p[j]匹配

eg:模板串是cbbbaababac,子串是ababa
在这里插入图片描述

这里解释一下:当子串和主串失配的时候,就根据next[]的值移动子串到相应位置去和主串匹配。当子串next[]值为-1的时候,主串的当前匹配位置后移一个字母

这里模拟一下匹配过程,i表示主串的当前匹配位置,j表示子串的当前匹配位置,初始i=0,j=0;主串p[],子串s[]

a!=c —> i++ i=1,j=0

a!=b —> i++ i=2,j=0

a!=b —> i++ i=3,j=0

a!=b —> i++ i=4,j=0

a==a —> i++,j++ i=5,j=1

b!=a —> i保持不变,j=next[j],跳转 i=5,j=0

a==a —> i++,j++ i=6,j=1

b==b —> i++,j++ i=7,j=2

a==a —> i++,j++ i=8,j=3

b==b —> i++,j++ i=9,j=4

a==a —> i++,j++ i=10,j=5

j>=strlen(s) 匹配结束 , 返回可以匹配的首地址 return j-i+1

#include<iostream>
#include<string.h>
using namespace std;
char p[100],s[100];
int next1[100];
void get_next(char *s,int *next1)
{int m=strlen(s);//子串的长度int j=0;//当前匹配的位置int k=-1;//失配的时候要跳转的位置(也是最长公共前后缀的长度)next1[0]=-1;while(j<m){if(k==-1||s[j]==s[k])next1[++j]=++k;elsek=next1[k];}
}
int kmp(char *p,char *s)//p是模板串,s是子串
{int i=0,j=0;int n=strlen(p);int m=strlen(s);while(i<n&&j<m){if(j==-1||p[i]==s[j]){i++;j++;}elsej=next1[j];}if(j>=m)//s串比较完毕return i-m+1;elsereturn -1;
}int main()
{cin>>p>>s;get_next(p,next1);for(int i=0;s[i];i++)cout<<"next["<<i<<"]="<<next1[i]<<endl;cout<<"从第"<<kmp(p,s)<<"个字符开始匹配"<<endl;//返回的是开始匹配的第几个字符,不是位置return 0;
}
http://www.lbrq.cn/news/1404199.html

相关文章:

  • 网站怎么做响应式/品牌推广公司
  • 手机网站底部导航代码/宝塔建站系统
  • 天津个人做网站/全面网络推广营销策划
  • 上饶做网站要多少钱/知名品牌营销策划案例
  • 国家工程建设标准化协会网站/郑州优化网站关键词
  • 有趣的网站网址/搜索引擎优化工作
  • 什么网站能免费/免费企业建站
  • 彩票网站开发软件/网络销售怎么学
  • 爱站网关键词挖掘工具站长工具/什么软件推广效果好
  • mac可以做网站服务器吗/南京 seo 价格
  • 做安全平台网站/南宁网站建设优化服务
  • 免费网站安全软件大全免费下载安装/海外推广专员
  • 网站建设推广有没有/网络推广人员
  • 团购网站营销方案/快速优化排名公司推荐
  • 中国网站排名站长之家/crm客户管理系统
  • dede织梦php文章图片网站源码 完整后台 带在线音乐/优化大师电脑版官网
  • 网站受到攻击 怎么做/广东seo加盟
  • 外贸网站建设报价差别那么大花钱多吃亏/太原自动seo
  • 什么网站广告做多/搜索关键词排名优化技术
  • 东莞企创做网站怎么样/交易平台
  • 多钱网网站/seo月薪
  • 怎么样再自己的网站做二级域名/上海最近三天的新闻
  • 宜昌 公司 网站建设/2021年重大新闻事件
  • 湖南平台网站建设公司/营销推广案例
  • 东莞市人民政府/淘宝优化关键词的步骤
  • 网站后台权限管理/微信推广软件哪个好
  • 网站主机查询/seo专业培训机构
  • 广元商城网站开发/百度问答下载安装
  • 石狮网站建设联系电话/自己如何制作网页
  • 校园网站设计的毕业论文/购买友情链接
  • 决策树剪枝及数据处理
  • Linux的ALSA音频框架学习笔记
  • GaussDB 八种常规锁介绍
  • CloudDM 新增支持 GaussDB 与 openGauss:国产数据库管理更高效
  • 云原生堡垒机渗透测试场景
  • JMeter与大模型融合应用之构建AI智能体:评审性能测试脚本