KMP算法主要是用来求解子串在主串中第一次出现的位置,并返回这个子串的位置的一种提高效率的方法。在讲解KMP算法之前,我们先来看看求子串在主串中位置的一般解法,即暴力解法。
1.暴力解法
public static int BF(String str,String sub){
if(str == null || sub == null){
return -1;
}
int lenStr = str.length();
int lenSub = sub.length();
if(lenStr == 0 || lenSub == 0){
return -1;
}
int i = 0;
int j = 0;
while (i < lenStr && j < lenSub ){
if(str.charAt(i) == sub.charAt(j)){
i++;
j++;
}else {
i = i - j + 1;
j = 0;
}
}
if(j >= lenSub){
return i-j;