字符串匹配

字符串匹配

问题描述:在字符串T中找模式串P的位置
目标串T,长度为N
模式串P,长度为M

BF算法:

时间复杂度:O(N*M)

KMP算法:

  1. 思想:BF算法在字符串失配后,目标串的指针都要回退到开始位置+1。KMP消除了目标指针的回退,提高模式匹配效率。

  2. 既然消除了目标串的指针回退,那么变化的是模式串P的指针。当发生失配时,模式串P中哪个字符和目标串继续比较?–》next特征向量。

  3. next的计算

int k=-1;
(1)j==0,next[0] = -1;
(2)j > 0,
  (2.1)k == -1,j++; k++; next[j] = k(0);  //next[1] = 0;
  (2.2)k != -1
    (2.2.1)P[j] == P[k], j++; k++; next[j] = k; 
    (2.2.2)P[j] != P[k],k = next[k];
  

在这里插入图片描述
4. 时间复杂度:O(N+M)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值