一、比较暴力算法和KMP算法
1、暴力算法:
双指针遍历主串和子串,当发现主串和子串不匹配时,双指针同时回溯
2、KMP算法:
双指针遍历主串和子串,当发现主串和子串不匹配时,通过比较子串的next数组只回溯子串指针,从而提高算法速度
二、next数组含义
next[j]=第j位字符前面的j-1位字符所组成的子串的最长公共前后缀长度
三、计算next数组
计算子串每个字符左子串的最长公共前后缀长度
四、算法实现
public class KMP {
public static void main(String[] args) {
String str="abcksljafkdshfjksd";
String subs="sl";
System.out.println(kmp(str,subs));
}
/**
* 遍历比较字符串
* @param str 主串
* @p