【数据结构】串的模式匹配-KMP算法

KMP算法是一种优化的字符串模式匹配算法,避免了不必要的回溯。通过构建next数组来记录模式串中字符匹配失败时的回溯位置,从而提高匹配效率。文章详细介绍了KMP算法的概念、原理,以及如何计算next数组,并提供了算法实现和测试案例。
摘要由CSDN通过智能技术生成

目录

概念

简述

KMP算法原理

代码

计算next数组

KMP算法

测试

改进KMP算法简介


概念

简述

从s中匹配t串,在BF算法中,通过指针回溯不断进行匹配,其思想是穷举。效率很低,但有些串有一定的规律,不需要回溯s串的指针,这就是KMP算法。

比如 s: aaaaaab

        t:  aaab

在进行比较时,如果按照BF算法,需要进行最后一次才能匹配成功。但是我们发现s和t串前几位是相同的,不需要重复比较。当然,计算机不会像人这么敏感,但是能否设计出一种算法,提高类似这种模式匹配的效率呢?答案是肯定的,这就是KMP算法。

KMP算法是由三个外国人K某、M某、P某三人提出的,所以叫KMP算法。

KMP算法原理

KMP算法的核心是针对模式串下手,提取器规律来用于加速匹配过程。

比如,上述匹配过程中s[3]≠t[3],如果按照BF算法,t指针回溯到t[0],s指针回溯到s[1],继续进行匹配,<

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值