史上比较难懂的KMP算法介绍

好看1

书生来自秦朝南海郡,是一秃头学子。
取经之路漫漫,沉心学习方见始终。

好看2


前言

数据结构里面有个KMP算法,法苏ovo是助教,他就有心做了个文章。这篇文章整体来说,是很贴心的,但是,看不懂也没有关系。

俺也没大看懂XD
如果这篇看不懂,可以看这篇,讲的挺好的:https://www.cnblogs.com/zzuuoo666/p/9028287.html

众所周知,KMP这玩意挺难理解的,这里就介绍一下KMP嘛~


一、串匹配简介及KMP引入

1.串匹配

串匹配问题,就是给你一个很长的字符串P,然后给你一个目标字符串Q,现在让你在字符串P中找到字符串Q出现的位置。
在这里插入图片描述

2.暴力法串匹配

最简单粗暴的就是使用两个下标i,j分别指向两个字符串P和Q,一开始都从第一个字符开始逐个比较,如果相同,则同时后移一位进行下一个字符的比较,如果遇到一个不相同的字符,则将Q的下标j置零,也就是从头开始比较,而P的下标则重置到开始比较时的下一个位置。

这里怕机器画图大家不好理解,就手动画图了ovo(不是因为懒)
就是循环查找遍历啦~

在这里插入图片描述


暴力法实现代码如下:

int getIndex(string p,string q)
{
   
    int i=0;
    int j=0;
    while(i<(int)p.length() && j<(int)q.length())
    {
   
        if(p[i] 
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值