KMPアルゴリズムの完全な理解を最初から最後まで[予約]

1はじめに

①文字列照合、激しい時間複雑性O(N * M)が一致障害が発生すると、Sシリーズ、Tシリーズは、試合を開始するために、バック出発点に入らなければなりません。

INT ViolentMatch(CHAR * S、するchar * T)
{ 
    int型SLEN = STRLEN(S); 
    INT TLEN = STRLEN(T); 
    (; IはSLENを<; I = 0をint型Iは++)のために{// Sストリング
        INT J = 0 ; 
        用(; J <TLEN; J ++){// Tの文字列
            の場合(S [I + jが] T [j]を=!)ブレーク; // マッチが失敗
        } 
        (J == TLEN)IF Iが返す; //一致完全
    } 
    -1を返します; 
}

露出問題:失敗したら、SシリーズとTシリーズは点マッチングを開始発生するロールバックする必要があります。あなただけの文字列のロールバックT、Sシリーズはロールバックされないようにでき方法はありますか?KMPアプリケーションが誕生しました。

O(N + M)の②KMP時間複雑

アイデア:マッチが失敗するたびに、ロールバックに失敗することはできません、Sが文字列をロールバックしない、Tバック、最大接頭辞文字列、次のアレイの導入に落ちます。

参考:https://blog.csdn.net/wardseptember/article/details/78801491

 

おすすめ

転載: www.cnblogs.com/IIYMGF/p/11400053.html