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