『笔记备忘』串的模式匹配算法——KMP算法

本文介绍了KMP算法,一种优化的串匹配算法,避免了BF算法中的回溯,提高了效率。KMP的关键在于next函数(表),它记录了子串的前缀和后缀相同的最长长度,用于在匹配失败时确定子串的移动位置。文章通过实例详细解释了next表的生成及KMP算法的工作原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

『写在前面』

今天又是连着上一下午的数据结构,ORZ。讲了Knuth,Morris,Pratt三位大牛写的惊天算法。但是听的糊里糊涂,所以今天来整理一下。

『KMP算法原理』

KMP算法其实是对经典BF算法的一种优化,利用了之前比较过的“已知信息”,跳过了重复的比较,加快了算法效率。

先看BF算法  

BF算法是一种暴力求解的方式,是拿子串从头挨个和主串比较 ,当串匹配成功就跳出循环  

(从百度盗个图来理解一下)

//*ÒÔÏÂΪ¾­µäBFËã·¨
#include <iostream>
#include <string>
using namespace std;
int main() {
	string s = "ababcabcacbab",t = "abc";
	int n = s.length(),m = t.length();
	int i = 0,j = 0;
	while( i < n && j < m) {
		//cout<<" j = "<<j<<"  i = "&l
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值