完全看不懂的KMP算法

KMP算法


前言

当我第一次接触KMP算法的时候我是懵逼的,看着眼前一个字符串的题目愣是莫得思路,后来我接触到了KMP算法,然后……

然后就更懵逼了

一、这啥玩意?

KMP 算法,该算法相对于 Brute-Force(暴力)算法有比较大的改进,主要是消除了主串指针的回溯,从而使算法效率有了某种程度的提高。

二、代码示例

int n[MAXN];
string t;
void getnext()
{
   int j=0,k=-1;
   n[0]=-1;
   while(j<t.length-1)
   {
      if(k == -1 || t[j] == t[k])
      {
         j++;
         k++;
         next[j] = k;
      }
      else k = n[k];//这句是最让人懵逼的地方
   }
}

简而言之,数组n的作用就是与字符串t的第i个字符相同的字符的下标为n[i],算法时间复杂度为O(m+n).

总结

暂时看不懂,理解不透,暂且记下这个模板。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值