这两天复习数据结构(严蔚敏版),记录第四章串中的两个重要算法,BF算法和KMP算法,博主主要学习Java,所以分析采用Java语言,后面会补上C语言的实现过程. 1.Brute-Force算法(暴力法) 要求:将主串的第i个字符(一般情况i为1)和字串的第一个字符进行比较.若相等,则继续比较后续字符:若不相等,则从主串的下一个字符起,重新与子串的第一个字符比较.成功,返回主串中与子串相匹配的子序列的第一个字符的序号:失败,返回0 public class Brute_Force { /** *…
主串 s:A B D A B C A B C 子串 t: A B C A B 问题:在主串 s 中是否存在一段 t 的子串呢? 形如上述问题,就是串匹配类问题.[串匹配--百度百科] 串匹配问题是一项有着非常多应用的重要技术,KMP匹配算法就是其中一种高效的字符串匹配算法. 在KMP算法之前先介绍一下BF算法,BF算法又名暴力匹配算法,该算法在匹配的时候把子串依次从主串的起始位置开始匹配,若匹配失败再从主串的下一个位置开始,子串重新从头开始匹配-- BF算法 int BF(char *str,…