KMP
核心思路:若存在字符串(不以0为起始位置)与起始位置至任一位置字符串相同,若匹配失败则可以从上一个字符在起始字符串中的相同的位置开始比较。
求出next就好了。
for(int i = 2, j =0; i < s.length; ++i){
while(j && model[i] != model[j+1]) j = next[j];
if(model[j+1] == model[i])j++;
next[i] = j;
}
微信扫一扫
核心思路:若存在字符串(不以0为起始位置)与起始位置至任一位置字符串相同,若匹配失败则可以从上一个字符在起始字符串中的相同的位置开始比较。
求出next就好了。
for(int i = 2, j =0; i < s.length; ++i){
while(j && model[i] != model[j+1]) j = next[j];
if(model[j+1] == model[i])j++;
next[i] = j;
}
相关推荐