Verstehen Sie schnell den KMP-Algorithmus

Ich habe eine KMP-Frage zu Likou gestellt, aber die Erklärung war verwirrend, und ich habe viele andere Erklärungen gelesen, um eine Zusammenfassung zu erstellen.

Verstehen Sie zunächst die Definition

Hauptstring: Der String, in dem passende Teilstrings zu finden sind.

Musterzeichenfolge: Die Zeichenfolge, die in der Hauptzeichenfolge zu finden ist.

Wahres Präfix: ein Präfix, das sich selbst nicht einschließt. Beispielsweise sind für „ABC“ die wahren Präfixe „A“ und „AB“ (leere Zeichenfolgen werden nicht erwähnt).

Echtes Suffix: „C“ und „BC“ sind dasselbe (beachten Sie, dass es „BC“ statt „CB“ ist, einige Leute haben es falsch geschrieben)

Das Folgende ist das Kernkonzept

Wenn Sie beispielsweise nach einer Musterzeichenfolge in der Hauptzeichenfolge suchen, wird festgestellt, dass ein Zeichen unterschiedlich ist, aber alle vorherigen Übereinstimmungen stimmen überein. Daher sind einige der vorherigen Zeichenfolgen Teilzeichenfolgen der Musterzeichenfolge. Aus diesem Grund können wir ein Sucherlebnis durch die Musterzeichenfolge zusammenfassen. Dieses Erlebnis ist das nächste Array, das wir erstellt haben.

Das nächste Array ist ein Array, das auf der Musterzeichenfolge basiert und uns dabei hilft, das maximal gleiche wahre Präfix und wahre Suffix in der übereinstimmenden Teilzeichenfolge zu finden. Und warum suchen Sie danach?

Dies liegt daran, dass wir das wahre Suffix der Hauptzeichenfolge als wahres Präfix der Musterzeichenfolge verwenden können, um mit der Suche fortzufahren. Das heißt, die Zeichen nach dem wahren Präfix werden mit den verschiedenen Zeichen in der Hauptzeichenfolge verglichen. Anstatt nur eine zur Hauptzeichenfolge hinzuzufügen, wird die Musterzeichenfolge von Anfang an verglichen.

Ich werde keine Beispiele für bestimmte Codes oder ähnliches nennen.

Ich hoffe, es kann jedem gefallen^~^

おすすめ

転載: blog.csdn.net/qq_45881403/article/details/132087077