定义
BF算法——朴素查找算法——也叫做串的模式匹配算法
其应用特别多,比如经常在一篇文章里面搜索一些东西,(比如文章里的某个内容,或某些关键字词出现的位置,次数等)
之前我们大多数情况下是用来搜索关键字,而Search函数只是用来搜索一个字符,比如下面push关键字的开头p,但search搜索不了整个关键字push
这种搜索整个关键字也就是搜索一串字符,就叫做——串的模式匹配
主串:相当于一篇文章
子串:就相当于这篇文章中的某个关键字
串的模式匹配算法:相当于在主串中查找看子串存不存在
搜索查找就是挨个字符对比匹配的过程
主串的下标i,和子串的下标j,然后将i位置的字符和j位置的字符进行对比,2个都一样就一块往后走,比下一个
遇到不一样的了
不一样了就要退回去重新了,j回去
现在2个一样,然后i和j同时往后走
按照这种方式一种走,直到j走完了,j走到空了,就认为匹配成功了
但上面这种算法是不对的,因为i也必须要退回去,即i必须回退
因为这种算法就不符合下图这种
每次不匹配时,i回退到上次开始的位置的下一个;而j都毋庸置疑的退回从头开始
因为如果i不回退,那就只找了主串中以第一个字符开头的子串,第二个到第n个字符开头的子串都没找,漏掉了怎么能说没找到
i必须回退的,就叫BF算法,也就朴素查找算法
串的模式匹配算法:(包含BF和KMP算法)
在主串中的pos(任意)位置开始查找,(不一定从0号位置开始,即不一定在全文中开始找),找到返回下标,没找到返回-1