KMP算法
Posted ArgenBarbie
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KMP算法相关的知识,希望对你有一定的参考价值。
void getNext(string needle, int *next) { int l = needle.length(), i, k; next[0] = -1; k = -1; for(i = 0; i < l-1;) { if(-1 == k || needle[i] == needle[k]) next[++i] = ++k; else k = next[k]; } } int KMP(string s1, string s2, int *next) { int l1 = s1.length(), l2 = s2.length(), i, j; for(i = 0, j = 0; i < l1;) { if(-1 == j || s1[i] == s2[j]) { i++; j++; } else j = next[j]; if(j == l2) return i-j; //返回子串第一次出现的位置下标 } return -1; }
以上是关于KMP算法的主要内容,如果未能解决你的问题,请参考以下文章