以前写的代码,先搬运到上来。先贴代码,后面补说明
int KMP(char * t, char * p)
{
int i = 0;
int j = 0;
int* pNext = new int[(int)strlen(p)]{-1};
GetNext(p,pNext);
while (i< (int)strlen(t) && j< (int)strlen(p))
{
if (j == -1 || t[i] == p[j])
{
i++;
j++;
}
else
j = pNext[j];
}
if (j == strlen(p))
return i - j;
else
return -1;
}
GetNext函数void GetNext(char * p, int * next)
{
next[0] = -1;
int i = 0, j = -1;
while (i< (int)strlen(p))
{
if (j == -1 || p[i] == p[j])
{
++i;
++j;
next[i] = j;
}
else
j = next[j];
}
}
你是否还在寻找稳定的海外服务器提供商?创新互联www.cdcxhl.cn海外机房具备T级流量清洗系统配攻击溯源,准确流量调度确保服务器高可用性,企业级服务器适合批量采购,新人活动首月15元起,快前往官网查看详情吧