虽然看了n遍kmp算法,但是每次用的时候都是网上找算法模板,没法想朴素算法一样直接写。看了这个http://www.matrix67.com/blog/archives/115,立马明了!通俗易懂,这才是大神,而不是一堆专业术语的堆叠,看得人恶心巴拉的~~

nyoj的一道水体,裸kmp算法;

代码如下:

#include<cstdio>
#include<cstring>
#define max 10010
int sum,p[max];
char a[max],b[max];

void next()
{
    int j=0;
    p[1]=0;
    for(int i=2;a[i]!='\0';i++)
    {
        while(j>0&&a[j+1]!=a[i])  j=p[j];
        if(a[j+1]==a[i])  j++;
        p[i]=j;
    }
}

int kmp()
{
    int j=0;
    for(int i=1;b[i]!='\0';i++)
    {
        while(j>0&&b[i]!=a[j+1])  j=p[j];
        if(b[i]==a[j+1]) j++;
        if(a[j+1]=='\0') sum++,j=p[j];
    }
    return sum;
}

int main()
{
    int n;
    scanf("%d",&n);getchar();
    for(int i=0;i<n;i++)
    {
       scanf("%s%s",a+1,b+1);
       next();sum=0;
       printf("%d\n",kmp());
    }
    return 0;
}

关于线性字符串匹配的算法-----KMP的算法相关推荐

  1. 字符串匹配优化(KMP)(写+转载)

    我的理解:总的来说,由于传统的暴力求字符串匹配复杂度为0(n*m),效率太低.然后出现了KMP算法,效率 0(m+n).其算法的核心在于求解最长前缀后得到要跳过的距离(即不需要去匹配的串直接跳过) 题 ...

  2. 字符串匹配经典题目——KMP算法(Leetcode题解-Python语言)

    28. 实现 strStr() strStr(haystack: str, needle: str) 的作用就是在 haystack 字符串(长度为 n)中找出 needle 字符串(长度为 m)出现 ...

  3. 三十五、字符串匹配问题--KMP算法

    一.暴力匹配算法实现字符串匹配 如果用暴力匹配的思路,并假设现在 str1 匹配到 i 位置,子串 str2 匹配到 j 位置,则有: 如果当前字符匹配成功(即 str1[i] == str2[j]) ...

  4. KMP算法-字符串匹配(浅显易懂)

    KMP的经典思想就是:当出现字符串不匹配时,可以记录一部分之前已经匹配的文本内容,利用这些信息避免从头再去做匹配. 本篇将以如下顺序来讲解KMP, 什么是KMP KMP有什么用 什么是前缀表 为什么一 ...

  5. 分享一下字符串匹配BM算法学习心得。

    字符串匹配BM(Boyer-Moore)算法学习心得 BM算法 是 Boyer-Moore算法 的缩写,是一种基于后缀比较的模式串匹配算法.BM算法在最坏情况下可以做到线性的,平均情况下是亚线性的(即 ...

  6. 字符串匹配shiftand算法

    令人惊叹的Shift-And/Shift-Or 写在前面:Shift-And/Shift-Or是如此令人惊叹的算法,在KMP基础上开始一段神奇之旅. 目的:以Shift-And算法为载体,试图在减少思 ...

  7. 算法五——字符串匹配(上)

    文章内容.图片均来自极客时间. 如何借助哈希算法实现高效字符串匹配 1 概念和用途 字符串匹配:查找一个字符串A在字符串B中是否出现,这个过程就是字符串匹配.A称为模式串,B称为主串.主串的长度记为n ...

  8. 【C#】KPM算法解决字符串匹配问题

    KPM算法解决字符串匹配问题 什么是KPM算法 步骤 Ⅰ根据<最大长度表>部分匹配表(next) 寻找最长前缀后缀 Ⅱ 根据 部分匹配表 进行匹配 代码实现 什么是KPM算法   Knut ...

  9. 算法之路,带你轻松学废算法系列之字符串匹配(中)

    文章目录 字符串匹配中 前言 KMP算法 KMP算法的基本原理 失效函数计算方法 问题解答 KMP 算法复杂度分析 小结 Trie树 什么是Trie树 如何实现一棵 Trie 树? Trie树的构造 ...

  10. 字符串匹配:字符串中查找某子串

    字符串匹配:字符串中查找某子串 需求 具体算法 常规方法 程序 KMP算法 程序 后续 需求 我们在平时的软件开发,尤其是嵌入式开发,字符串匹配是非常重要的一个算法.而目前常用的字符串匹配算法有很多, ...

最新文章

  1. 查看mysql的编码格式
  2. js moment时间戳与时间格式相互转换
  3. php Function split() is deprecated 的解决办法
  4. 推荐系统与GNN的火花
  5. 语言三做一年级算题_一年级数学期末考试,学生交卷说能考100分,快让你家孩子试试吧...
  6. 22岁何同学引爆B站!硬核毕设树莓派星轨拍摄仪,上演理工男的终极浪漫
  7. linux htb 源代码,LINUX TC:HTB相关源码
  8. Spark streaming 概述
  9. linux nginx 添加插件,linux安装nginx1.9.9实录
  10. Mysql数据库系统单元压力和性能基准测试
  11. C++中将数据(或图像数据)写到txt
  12. 嵌入式相关开源项目、库、资料
  13. linux下nginx和redis安装笔记
  14. mysql中插入数据时Duplicate entry ‘‘ for key ‘PRIMARY‘的解决方案
  15. 《李尔王》:重拾李尔王的话语权力
  16. K8S Ingress的安装与使用
  17. 工单流转 指派 php,第三节 工单的指派和处理
  18. Vue3.0笔记(B站天禹老师)
  19. 【C++】vector的基本使用
  20. PERT(计划评审技术,Program Evaluation an Review Technique)

热门文章

  1. JavaScript垃圾收集-标记清除和引用计数
  2. Web API 路由 [二] Attribute Routing
  3. SVN的各种符号含义,svn的星号,感叹号,问号等含义
  4. 分享一个高清壁纸网站
  5. [Vmware]IP配置方式
  6. 为Android GridView 设置行背景
  7. asp.net onclick与onclientclick的区别
  8. 戴爾新電腦走上時尚路線
  9. 【Henu ACM Round#19 A】 Vasya the Hipster
  10. JAVA基础针对自己薄弱环节总结02(循环)