串的模式匹配操作
在学习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:有什么问题或者不解的地方可以评论,我都会一一就行回复的,如果有错误或者言语不明的地方,还请大神多多指点!
网友评论