// 字符串匹配 KMP 算法
void kmp( char * mom, char * son ) // 字符串从1下标开始读,0位随便添一个,方便操作
{
lenm = strlen( mom )-1;
lens = strlen( son )-1;
int k = 0;
for( int i = 2; i <= lens; i++ )
{
while( k && son[i] != son[k+1] ) k = prefix[k];
if( son[i] == son[k+1] ) k++;
prefix[i] = k;
}
k = 0;
for( int i = 1; i <= lenm; i++ )
{
while( k && mom[i] != son[k+1] ) k = prefix[k];
if( mom[i] == son[k+1] ) k++;
if( k == lens ) ans++, k = prefix[k];
}
}
【算法】KMP
最新推荐文章于 2024-08-12 14:02:36 发布