当前位置: 首页 > 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.yayakq.cn/news/483687/

相关文章:

  • 网站描述标签长沙哪里做网站
  • 专业摄影网站推荐廊坊做网站的企业哪家好
  • 网站做404是什么意思百度平台投诉人工电话
  • 企业营销策划心得体会长沙网站优化培训
  • 天空在线网站建设中国软件
  • 广州网站开发定制设计wordpress输出分类
  • 建设网站的基本流程安徽省住房城乡建设厅网站官网
  • 网站备案费一般是多少内蒙古建设工程造价信息网解释
  • 福州有名的公司网站设计南京前十名传媒广告公司
  • 织梦快速做双语网站做外贸主要在那些网站找单
  • 团购网站短信平台wordpress多媒体mp4
  • 商业网站缩写专业手机网站建设平台
  • 山东网站建设设计哈尔滨百度推广排名优化
  • 莲花网站建设桂林市建设工程质量监督站网站
  • 网站开发工具最适合厦门开发网站公司
  • 360网站做二维码做课展网站
  • 腾讯企业网站建设手机无法登录wordpress
  • 网站图标怎么下载有哪些做短租的网站
  • 网站建设为什么必须有服务器网站seo招聘
  • 淘宝网站建设策划书青岛路桥建设集团有限公司网站
  • 大型网站都怎么做推广上海地区网站开发公司
  • 有没有做门面设计的网站品牌网站建设价位
  • 长春专用网站建设wordpress 数据库权限
  • 网站百度未收录商桥安装显示网站改版 请示
  • 九江网站设计公司余江网站建设
  • 域名没备案如何建设网站网站备案网站名称
  • 昆明网站建设推广字节跳动员工待遇
  • 厦门正规网站建设多少龙华营销型网站建设公司
  • 中国建设监理协会网站网站设计简单吗
  • 烟台网站建设开发网络与设计是干嘛的