美文网首页
简单模式匹配:BruteForce算法

简单模式匹配:BruteForce算法

作者: 北方先森丶 | 来源:发表于2017-06-29 11:27 被阅读209次

串的模式匹配操作

在学习BruteForce算法之前,我们先简单了解一下什么是串的模式匹配操作。

官方:在字符串匹配问题中,我们期待查看S串(目标串)中是否含有串T(模式串)。S:主串 T:子串。如果在主串中查找到了子串,则模式匹配成功,返回模式串中的第一个字符主串中的位置。如果未找到,则模式匹配失败,返回-1。

说白了,也就S串中看是否有T串,有就返回第一个字符匹配的位置,没有就返回-1。

BruteForce算法

今天我们所讲的BruteForce算法也称简单匹配算法

基本思路:从目标串 S = "S0S1.....Sn-1"(不会打下标 -.-)的第一个字符开始和模式串 T = "T0T1....Tm-1"中的第一个字符相比较,若相等,则继续逐个比较,否则,从目标串第二个字符重新与模式串T进行比较,以此类推,直到匹配成功,或者匹配失败。

举个栗子:

假设 目标串 S = "cddcdc"  模式串 T = "cdc" 模式匹配过程如图:

代码实现!

BruteForce算法 总结

优点:简单明朗,便于实现记忆

缺点:进行了回溯,效率不高,并且很多对比匹配还是没有必要的。

因此,更多时候还是应该使用它的改进算法:KMP算法。


留个小铺垫,下一讲我们将讲解 KMP 算法的原理与实现。

PS:有什么问题或者不解的地方可以评论,我都会一一就行回复的,如果有错误或者言语不明的地方,还请大神多多指点!

相关文章

网友评论

      本文标题:简单模式匹配:BruteForce算法

      本文链接:https://www.haomeiwen.com/subject/dmkmcxtx.html