KMP - wenzhoullq/leetcode GitHub Wiki
分析
先学前缀数组和后缀数组,再学kmp kmp
oiwiki解释的很清楚
模板
int len = s.length();
int[] dp = new int[len];//前缀的长度
int max =0;
char[] str =s.toCharArray();
for(int i = 1 ; i < len ; i++ ){//i 是子串后缀的最后一个的下标
int j = dp[i-1];//j是字串前缀的下标
while(j>0&&str[j]!=str[i]) j = dp[j-1];
if(str[j]==str[i]) j++;
dp[i] = j;
}