kmp模式匹配算法:
kmp模式匹配算法主要是对朴素的模式匹配算法的改进,假设有StringA和String B,i为A的首个字母的下标,j为B的首个字母的下标,即i=0,j=0,现要在A中匹配B,若用朴素的模式匹配算法,则i需要不断的回溯,如A=acbxacbd,B=abcd,当i=3,j=3时,发现字符不相等,如果使用的是朴素的模式匹配算法,则需要将i回溯为1,即i=i-j+1,而j=0。
若用的是KMP模式匹配算法,i不需要回溯,只有j根据字符串B的具体情况回溯到相应位置。
KMP解决了朴素匹配模式算法中的i和j的回溯问题,提高了字符串匹配的效率
KMP算法主要分为两部份
第一部分为方法getNext(),其数组的元素为在对应字符不相等时j需要回溯到字符串B的相应位置
public void getNext(String str,int[] next){ int i=0,j=-1; next[0] = -1; while(i