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

专业微信网站建设做网站流程

专业微信网站建设,做网站流程,北京网络推广有哪些公司,制作网站建设的公司目录 引言一、算法概念二、题目描述三、思路讲解三、代码实现四、测试 引言 这个KMP算法就是怎么说呢,就是不管算法竞赛还是找工作笔试面试,都是非常爱问爱考的,其实也是因为这个算法比较难懂,其实就是很难,所以非常个…

目录

  • 引言
  • 一、算法概念
  • 二、题目描述
  • 三、思路讲解
  • 三、代码实现
  • 四、测试

引言

这个KMP算法就是怎么说呢,就是不管算法竞赛还是找工作笔试面试,都是非常爱问爱考的,其实也是因为这个算法比较难懂,其实就是很难,所以非常个人的一个思维逻辑吧,反正就是用来区分人的,我会你不会,那么我就比你牛逼,所以那就开始吧。

一、算法概念

这个KMP算法就是用来匹配字符串的,在一个字符串中是否有另一个字符串的存在,如果存在返回原始字符串中的初始下标

二、题目描述

给定一个字符串 S,以及一个模式串 P,所有字符串中只包含大小写英文字母以及阿拉伯数字。模式串 P 在字符串 S 中多次作为子串出现。求出模式串 P 在字符串 S 中所有出现的位置的起始下标。输入格式
第一行输入整数 N,表示字符串 P 的长度。
第二行输入字符串 P。
第三行输入整数 M,表示字符串 S 的长度。
第四行输入字符串 S。输出格式
共一行,输出所有出现位置的起始下标(下标从 0 开始计数),整数之间用空格隔开。数据范围
1≤N≤1051≤M≤106输入样例:
3
aba
5
ababa输出样例:
0 2

三、思路讲解

这个KMP最重要的就是一个next数组,先来说一下这个是什么意思吧,next [i] 里面存的是在模板串中的以第i号下标为终点,和以第1号下标为起点的两个字符串相等的话,它们的长度最长为 j ,也就是第 i 号位置的最大的后缀和前缀相等的最大长度是j
在这里插入图片描述
然后就是匹配算法了,如下图如果说在模板串中,到第 j 号下标都匹配成功的话,原串的第 i 号下标和模板串的第 j+1号下标不匹配了,那么最暴力的做法就是将模板串往后移动一位,再重新一个一个匹配,那么KMP的想法是,我之前已经匹配了那么些串了,那么能不能用一些性质,来帮助我更加高效的匹配呢
在这里插入图片描述
然后又因为绿色的都是相等的,又因为我们有了next数组,可以知道当前的模板串往后移动的话,可以知道向后移动的最小距离是多少,又能够使得从 [1, ne[j] ]的模板串跟从 [i - j + 1, i - 1]的字串是相等的, 也就是说能使每一次匹配的原串没有浪费,都不用再重新匹配
在这里插入图片描述

三、代码实现

然后这个KMP的话,下标一般是从1开始的

#include <iostream>using namespace std;const int N = 100010, M = 1000010;int n, m;
char p[N], s[M];
int ne[N];int main()
{cin >> n >> p + 1 >> m >> s + 1;//求next数组for(int i = 2, j = 0; i <= n; ++i)  //因为ne[1]就是0可以直接从2开始{while(j && p[i] != p[j+1]) j = ne[j];if(p[i] == p[j+1]) j++;ne[i] = j;}for(int i = 1, j = 0; i <= m; ++i){while(j && s[i] != p[j+1]) j = ne[j];if(s[i] == p[j+1]) j++;if(j == n){printf("%d ", i - n);j = ne[j];}}return 0;
}

四、测试

在这里插入图片描述

http://www.wangmingla.cn/news/111075.html

相关文章:

  • 腾讯企业邮箱怎么申请陕西seo关键词优化外包
  • 系统官网网站模板下载seo 优化 服务
  • 网站加视频百度广告代运营
  • wordpress获取当前文章标签四川seo推广公司
  • 视频网站直播怎么做的竞价托管推广代运营
  • 广州网站制作品牌搜索引擎优化是免费的吗
  • 免费的海报模板网站长沙关键词优化平台
  • 永川做网站软件培训机构
  • 企业网站 论文搜索关键词是什么意思
  • 展厅设计说明100字正版搜索引擎优化
  • 石碣东莞网站建设宁波专业seo外包
  • 通州区网站制作网站建设哪家好
  • 网站策划书撰写交易平台
  • 网站内容如何更新今日油价92汽油价格
  • 全球做空现货黄金的网站googleplaystore
  • 服务号微网站怎么做的湖南网络优化
  • 如何区分官方网站和空壳网站站长工具免费
  • 长兴做网站新闻发稿软文推广
  • 企业网站介绍整站seo排名
  • 壶关网站建设百度竞价推广屏蔽软件
  • 做系统网站百度投诉中心24小时电话
  • 做排名的网站河北网站seo策划
  • 浦项建设中国有限公司网站内容营销成功案例
  • 专业团队高端网站制作百度一下网页版浏览器
  • 青岛做优化网站哪家好湖北百度seo排名
  • 有什么做海报网站it培训机构排行榜
  • 温江网站建设西安百度seo排名
  • 做平台是做网站和微信小程序的好别中国万网域名查询
  • 自己架设的传奇怎么做网站软文发稿网
  • 信仰类型的企业网站app推广代理平台