现在的位置: 首页 > 综合 > 正文

【算法】KMP

2014年02月13日 ⁄ 综合 ⁄ 共 329字 ⁄ 字号 评论关闭
// 字符串匹配 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];
    }
}

抱歉!评论已关闭.