关于线性字符串匹配的算法-----KMP的算法
虽然看了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的算法相关推荐
- 字符串匹配优化(KMP)(写+转载)
我的理解:总的来说,由于传统的暴力求字符串匹配复杂度为0(n*m),效率太低.然后出现了KMP算法,效率 0(m+n).其算法的核心在于求解最长前缀后得到要跳过的距离(即不需要去匹配的串直接跳过) 题 ...
- 字符串匹配经典题目——KMP算法(Leetcode题解-Python语言)
28. 实现 strStr() strStr(haystack: str, needle: str) 的作用就是在 haystack 字符串(长度为 n)中找出 needle 字符串(长度为 m)出现 ...
- 三十五、字符串匹配问题--KMP算法
一.暴力匹配算法实现字符串匹配 如果用暴力匹配的思路,并假设现在 str1 匹配到 i 位置,子串 str2 匹配到 j 位置,则有: 如果当前字符匹配成功(即 str1[i] == str2[j]) ...
- KMP算法-字符串匹配(浅显易懂)
KMP的经典思想就是:当出现字符串不匹配时,可以记录一部分之前已经匹配的文本内容,利用这些信息避免从头再去做匹配. 本篇将以如下顺序来讲解KMP, 什么是KMP KMP有什么用 什么是前缀表 为什么一 ...
- 分享一下字符串匹配BM算法学习心得。
字符串匹配BM(Boyer-Moore)算法学习心得 BM算法 是 Boyer-Moore算法 的缩写,是一种基于后缀比较的模式串匹配算法.BM算法在最坏情况下可以做到线性的,平均情况下是亚线性的(即 ...
- 字符串匹配shiftand算法
令人惊叹的Shift-And/Shift-Or 写在前面:Shift-And/Shift-Or是如此令人惊叹的算法,在KMP基础上开始一段神奇之旅. 目的:以Shift-And算法为载体,试图在减少思 ...
- 算法五——字符串匹配(上)
文章内容.图片均来自极客时间. 如何借助哈希算法实现高效字符串匹配 1 概念和用途 字符串匹配:查找一个字符串A在字符串B中是否出现,这个过程就是字符串匹配.A称为模式串,B称为主串.主串的长度记为n ...
- 【C#】KPM算法解决字符串匹配问题
KPM算法解决字符串匹配问题 什么是KPM算法 步骤 Ⅰ根据<最大长度表>部分匹配表(next) 寻找最长前缀后缀 Ⅱ 根据 部分匹配表 进行匹配 代码实现 什么是KPM算法 Knut ...
- 算法之路,带你轻松学废算法系列之字符串匹配(中)
文章目录 字符串匹配中 前言 KMP算法 KMP算法的基本原理 失效函数计算方法 问题解答 KMP 算法复杂度分析 小结 Trie树 什么是Trie树 如何实现一棵 Trie 树? Trie树的构造 ...
- 字符串匹配:字符串中查找某子串
字符串匹配:字符串中查找某子串 需求 具体算法 常规方法 程序 KMP算法 程序 后续 需求 我们在平时的软件开发,尤其是嵌入式开发,字符串匹配是非常重要的一个算法.而目前常用的字符串匹配算法有很多, ...
最新文章
- 查看mysql的编码格式
- js moment时间戳与时间格式相互转换
- php Function split() is deprecated 的解决办法
- 推荐系统与GNN的火花
- 语言三做一年级算题_一年级数学期末考试,学生交卷说能考100分,快让你家孩子试试吧...
- 22岁何同学引爆B站!硬核毕设树莓派星轨拍摄仪,上演理工男的终极浪漫
- linux htb 源代码,LINUX TC:HTB相关源码
- Spark streaming 概述
- linux nginx 添加插件,linux安装nginx1.9.9实录
- Mysql数据库系统单元压力和性能基准测试
- C++中将数据(或图像数据)写到txt
- 嵌入式相关开源项目、库、资料
- linux下nginx和redis安装笔记
- mysql中插入数据时Duplicate entry ‘‘ for key ‘PRIMARY‘的解决方案
- 《李尔王》:重拾李尔王的话语权力
- K8S Ingress的安装与使用
- 工单流转 指派 php,第三节 工单的指派和处理
- Vue3.0笔记(B站天禹老师)
- 【C++】vector的基本使用
- PERT(计划评审技术,Program Evaluation an Review Technique)