十、KMP模式匹配算法 -- 经典版(next实现法)

本文介绍了KMP模式匹配算法,通过C语言实现,避免了朴素算法中的回溯问题,提高了效率。文章详细解析了KMP算法的两种情况及next数组的应用,旨在帮助读者理解算法原理。
摘要由CSDN通过智能技术生成

KMP算法详解(本文章的KMP算法的实现是用C语言,没有进行串的存储结构的实现,使用的是char数组)

  1. 引言
            我们在小学的时候老师一定教过我们怎么查字典(不知道怎么查字典的请自行百度),其实查字典的一个过程,就好像我 们在写代码有时候需要在一个很长的字符串中去查找一个(或一段)子串,这个时候我们就会写一个程序来帮助我们找。也就引出了朴素模式匹配算法
            由于朴素模式匹配算法 的效率过于低,这时候就有三个大佬(D.E.Knuth、J.H.Morris、V.R.Pratt)忍受不了了,决定发明一个效率更高的模式匹配算法,这个时候KMP模式匹配算法便诞生了。

  2. 单词解释
            SubString : 子串;
            PriString : 主串;
            SubIndex : 子串的下标;
            PriIndex : 主串的下标;

  3. 朴素算法
            根据朴素模式算法我们知道它的实现思想就是,子串从下标0开始遍历,主串从下标0开始遍历,如果:SubString[SubIndex] == PriString[PriIndex] 那么SubIndex+1, PriIndex+1;否则 : SubIndex = 0, PriIndex返回到上次

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值