Coding Interview Prep · Lektion

Polynomiales String-Hashing

Vergleichen Sie Teilstrings in konstanter Zeit

Lektion 2 von 413 Schritte

Polynomiales String-Hashing ist eine kostenlose Coding Interview Prep-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Coding Interview Prep-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Teilzeichenketten schnell vergleichen

Oft müssen Sie prüfen, ob zwei Teilzeichenketten gleich sind. Zeichenweise Vergleiche sind langsam, daher wandeln wir jede Zeichenkette in eine Zahl um. 🔢

Die Idee des Hashings

Ein Hash bildet eine Zeichenkette auf eine einzelne Ganzzahl ab. Wenn sich zwei Zeichenketten unterscheiden, sind auch ihre Hashes fast immer verschieden.

Zeichenketten als Polynome behandeln

Wir lesen jedes Zeichen als Ziffer zur Basis p. Diese Polynom-Betrachtung verwandelt die Zeichenkette in eine große gewichtete Summe.

h = ord(s[0]) + ord(s[1]) * p + ord(s[2]) * p * p

Eine Basis und einen Modul wählen

Wählen Sie eine Primzahl als Basis, etwa 31, sowie einen großen Primzahlmodul. Der Modulo-Operator hält die Zahlen klein und verhindert Überläufe.

BASE = 31
MOD = 10**9 + 9

Einen Hash berechnen

Gehen Sie die Zeichenkette durch und fügen Sie jedes Zeichen mithilfe des Horner-Schemas ein, wobei Sie in jedem Schritt den Modulo-Operator anwenden.

h = 0
for c in s:
    h = (h * BASE + ord(c)) % MOD

Präfix-Hashes

Speichern Sie für jede Position einen Präfix-Hash. Dann lässt sich jeder Teilzeichenketten-Hash durch eine schnelle Subtraktion berechnen.

pre[i + 1] = (pre[i] * BASE + ord(s[i])) % MOD

Potenzen der Basis

Berechnen Sie außerdem die Potenzen der Basis im Voraus. Sie bringen die beiden Präfixe beim Subtrahieren auf dieselbe Ausrichtung.

pw[i] = (pw[i - 1] * BASE) % MOD

Teilzeichenketten-Hash in O(1)

Der Hash von s[l..r] ist die um eine Potenz skalierte Subtraktion zweier Präfix-Hashes. Pro Anfrage konstante Zeit.

def sub(l, r):
    return (pre[r] - pre[l] * pw[r - l]) % MOD

Vorsicht vor Kollisionen

Zwei verschiedene Strings können denselben Hash haben – das ist eine Kollision. Das kommt selten vor, aber bei Wettbewerben werden manchmal Eingaben konstruiert, die eine solche Kollision auslösen.

Sicherheit durch doppeltes Hashing

Verwenden Sie zwei unabhängige Moduli und vergleichen Sie beide Hashwerte. Eine gleichzeitige Kollision bei beiden ist praktisch unmöglich.

Wo Hashing glänzt

Hashing ermöglicht den Substring-Vergleich, das Finden von Wiederholungen und die Mustersuche. Es ist ein vielseitiges Schweizer Taschenmesser.

Kurzer Check

Wählen Sie das richtige Werkzeug, um viele Substrings sicher zu vergleichen.

Zusammenfassung: Hashing gewinnt

Sie können Strings jetzt in polynomiale Hashwerte umwandeln, jeden Substring in O(1) abfragen und sich gegen Kollisionen absichern. 🚀

Kostenlos starten

Lerne Coding Interview Prep mit einem KI-Tutor — kostenlos

Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.

Kurse
90
Lektionen
360

Häufig gestellte Fragen

Ist die Lektion „Polynomiales String-Hashing“ kostenlos?

Ja — der vollständige Text von „Polynomiales String-Hashing“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Coding Interview Prep-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Coding Interview Prep-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Polynomiales String-Hashing“?

Vergleichen Sie Teilstrings in konstanter Zeit Du übst Coding Interview Prep mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um Coding Interview Prep zu starten?

Keine Vorkenntnisse erforderlich. Coding Interview Prep auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.

Wie lange dauert die Lektion „Polynomiales String-Hashing“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser Coding Interview Prep-Lektion Code schreiben und ausführen?

Ja. Jede Coding Interview Prep-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. KMP-Präfixfunktion
  2. Polynomiales String-Hashing
  3. Z-Funktion für Mustersuche
  4. Tries für Präfixabfragen
← Zurück zu Coding Interview Prep