KMP算法简介KMP算法是一种字符串匹配算法,是由D.E.Knuth,J.H.Morris和V.R.Pratt提出的。其核心是利用字符串匹配失败后的的信息从而减少字符串与模式串的匹配次数从而提高字符串匹配的效率。
——百度百科
从上面的简介中,我们可以了解到KMP算法应用于字符串的匹配。字符串也叫串,是由字符组成的。而串的逻辑结构是线性表,作为一种特殊的线性表,其每个数据元素都是字符。两个串相同应当满足两个条件,首先是串的长度应当是相同的,其次是串中各个位置上的字符也应当是相同的。
关于字符串的匹配问题,一种很自然的方法就是将子串和主串的字符从头开始一一匹配。如果在某一位置字符不匹配就匹配失败,当子串全部被匹配完毕后即宣告成功。事实上,另一种字符串匹配算法Brute-Force算法正是这种思想。
public int BF(String str,String t,int begin){
//str 主串
//t 模式串
if(t.length()<=str.length()&&t!=null){
int i = begin;//主串开始匹配的位置
int m = str.length();
int n = t.length();
while(i<=m-n){
for(int j=0;j
if(t.charAt(j)!=str.charAt(i+j)){
i++;
break;
}
else if(j==n-1){
ret