1. KMP算法是一种线性时间复杂度的字符串匹配算法,它是对BF算法(Brute-Force,最基本的字符串匹配算法)的改进。对于给定的原始字符串string和模式字符串p,需要从字符串s中找出p(首次)出现的位置索引:BF算法的时间复杂度为O(strlen(s)*strlen(p),空间复杂度为O(1);KMP算法的时间复杂度为O(strlen(s)+strlen(p),空间复杂度为O(strlen(p);2. 两种算法的主要区别是失配时的处理:假设串s匹配到i位置,串p匹配到j位置:BF算法中,如果当前字符匹配成功,即si+j=p j,则令j+,继续匹配下一个字符;如果匹配失败,即s i+j!=p j,则让i+并且j=0,即每次失配时,原串匹配位置向右移动一位(从i+j回溯到i+1),而j重置为0。而KMP算法则是在发生失配时,根据模式中字符和失配在模式中出现的位置,来确定继续进行搜索(j)的位置,而i的位置不会向后回溯。3. 例如:假定p=abcabcacab,令字符串s=s0s1sm-1,且假设现在要判断是否存在从