next数组的讲解博客(一知半解的)

AcWing 831. KMP字符串 —— 深入浅出 next 数组 - AcWing

朴素做法

直接双循环,O(n^2)

#include<iostream>
#include<algorithm>
#include<cstring>
#include<stack>
#include<unordered_map>using namespace std;const int N = 1000010;int n, m;
char p[N], s[N];
int ne[N];int main()
{cin >> n >> p + 1 >> m >> s + 1;for (int i = 2, j = 0; i <= n; i++){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;
}

弄懂很麻烦,记住很简单,绷不住了

KMP算法(含next数组)相关推荐

  1. KMP算法的next数组通俗解释

    我们在一个母字符串中查找一个子字符串有很多方法.KMP是一种最常见的改进算法,它可以在匹配过程中失配的情况下,有效地多往后面跳几个字符,加快匹配速度. 当然我们可以看到这个算法针对的是子串有对称属性, ...

  2. KMP算法之NEXT数组代码原理分析 - 数据结构和算法38

    KMP算法之NEXT数组代码原理分析 让编程改变世界 Change the world by program KMP算法之NEXT数组代码原理分析 NEXT数组:当模式匹配串T失配的时候,NEXT数组 ...

  3. 数据结构与算法之KMP算法中Next数组代码原理分析

    2019独角兽企业重金招聘Python工程师标准>>> 一.KMP算法之Next数组代码原理分析       1.Next数组定义 当模式匹配串T失配的时候,Next数组对应的元素指 ...

  4. KMP算法及next数组(最大公共前后缀)求解

    KMP算法及next数组(最大公共前后缀)求解 2020.12.14理解: 1. KMP算法 网上关于KMP算法讲解较为简单易懂,因此在此只作简述: 在字符串s中匹配字符串t: S: ABE-AB-A ...

  5. KMP算法之next数组详解

    KMP算法之next数组详解 KMP算法实现原理 KMP算法是一种非常高效的字符串匹配算法,下面我们来讲解一下KMP算如何高效的实现字符串匹配.我们假设如下主串和模式串: int i;//i表示主串的 ...

  6. 看了这个你基本就会算kmp算法的next数组了

    看了这个你基本就会算kmp算法的next数组了 kmp算法的next数组求解在计算机专业考研中,以及在大学的数据结构考试中等场合可能会遇到,而遇到后,可能很多同学绕绕脑袋,抓抓头发,却发现还是做不来. ...

  7. KMP算法 → 计算next数组

    [KMP算法简介] KMP算法中的next数组仅取决于模式串本身,而与相匹配的主串无关. KMP算法中的next数组,是KMP算法的核心. KMP算法是由克努特(Knuth).莫里斯(Morris)和 ...

  8. KMP算法求回溯数组的步骤

    KMP算法到底是什么原理就不说了,各种资料上讲的明明白白,下面我就如何用代码来实现做一下说明和记录. KMP的核心思想就是,主串不回溯,只模式串回溯.而模式串匹配到第几位时失配,要回溯多少,由模式串本 ...

  9. 串的模式匹配、KMP算法、nextval数组求法

    一.暴力匹配 #include <iostream> using namespace std; #define MAXLEN 255 typedef struct{char ch[MAXL ...

  10. KMP算法的Next数组详解(转)

    转载请注明来源,并包含相关链接. 网上有很多讲解KMP算法的博客,我就不浪费时间再写一份了.直接推荐一个当初我入门时看的博客吧: http://www.cnblogs.com/yjiyjige/p/3 ...

最新文章

  1. SCWS 添加自定义词典
  2. 计算机基础及wps office应用_全国2019年4月自考00018《计算机应用基础》试题
  3. 我对CSS vertical-align的一些理解与认识(二)
  4. MIPCache 域名升级
  5. 英雄联盟S11总决赛EDG夺冠,网友:立下的flag可以兑现了
  6. 成本预算的四个步骤_工业企业成本管理之成本控制体系的构建
  7. VirtualBox 虚拟 CentOS 7 磁盘扩容
  8. 百度web前端面试2015.10.18
  9. 如何用idea开发vue
  10. php验证码一直错误,yii2.0验证码总是错误
  11. nodejs+java+python网上体育用品销售系统
  12. Android桌面小插件——Widget
  13. 独家专访阿里集团副总裁贾扬清:我为什么选择加入阿里巴巴?
  14. python汉字转换拼音
  15. 分享一篇写的非常好的文章《如何掌握企业级技术和项目经验》,非常值得一看!
  16. 工作纪实_17-正则表达式收藏
  17. 调用android邮件程序,Android开发中怎样调用系统Email发送邮件(多种调用方式)
  18. Git超详解五 变基 (看不懂算我输)
  19. 【2018】使用CD4013,CD4017,CD4053模拟三项步进电机
  20. 使用Echarts绘制geo地图(案例)

热门文章

  1. 循环单链表的销毁操作
  2. 朗强:视频监控矩阵切换器和视频会议信号传输器已进入无缝切换时代
  3. 南天软件c语言笔试题,南天软件一数据库笔试题
  4. 什么是聚集索引,非聚集索引,索引覆盖,回表,索引下推
  5. 使用Vue仿一个网易云网站
  6. uni-app实现发送到朋友圈,微信好友等功能兼容小程序app
  7. 今日天气预报软件测试,天气预报
  8. 从另外一个角度解释AUC
  9. postgreSQL存储过程写法示例
  10. DLP7000/DLP9500高速大容量DMD套件 鬼成像 CS 压缩感知 单像素相机