Voorbereiding op programmeerinterviews · Les

Z-functie voor patroonzoeken

Prefixen in de string vergelijken

Les 3 van 413 stappen

Z-functie voor patroonzoeken is een gratis Voorbereiding op programmeerinterviews-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Voorbereiding op programmeerinterviews. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.

Nog een hulpmiddel voor zoeken

De Z-functie is een helder alternatief voor KMP bij het zoeken naar patronen. Veel mensen vinden de redenering ermee eenvoudiger. ✨

Wat z[i] betekent

Voor elke index is z[i] de lengte van de langste deelreeks die op i begint en ook overeenkomt met een voorvoegsel van de hele tekenreeks.

Een klein voorbeeld

Voor aabaab is z gelijk aan 0,1,0,3,1,0. Op index 3 komt de reeks aab overeen met het voorvoegsel, dus is de lengte 3.

Het Z-venster

We houden een venster [l, r] bij: de meest rechtse overeenkomst die we tot nu toe hebben gevonden. Zo kunnen we eerdere vergelijkingen hergebruiken.

l, r = 0, 0

Binnen het venster

Als i binnen het venster ligt, kopieer je een bekende z-waarde als startpunt, begrensd door de rand van het venster.

if i < r:
    z[i] = min(r - i, z[i - l])

Voorbij het venster uitbreiden

Na het startpunt blijf je tekens één voor één vergelijken, zolang ze overeenkomen met het voorvoegsel.

while i + z[i] < n and s[z[i]] == s[i + z[i]]:
    z[i] += 1

Het venster naar voren schuiven

Als je overeenkomst verder naar rechts reikt, werk je l en r bij, zodat toekomstige indices de overeenkomst kunnen hergebruiken.

if i + z[i] > r:
    l, r = i, i + z[i]

Gegarandeerde lineaire tijd

Het venster beweegt alleen naar rechts, dus de totale hoeveelheid werk is O(n). Elk teken draagt een begrensde hoeveelheid werk bij.

Zoeken met Z

Voeg pattern + sep + text samen en voer Z uit. Elke z-waarde die gelijk is aan de lengte van het patroon, is een overeenkomst.

combined = pattern + chr(0) + text
z = z_function(combined)

Overeenkomsten aflezen

Doorloop de Z-reeks; waar z[i] == len(pattern) geldt, begint de overeenkomst op de bijbehorende plek in de tekst.

if z[i] == len(pattern):
    matches.append(i - len(pattern) - 1)

Z versus KMP

Z en KMP werken allebei in lineaire tijd. Z is vaak eenvoudiger te programmeren en is daarom een uitstekend alternatief in je gereedschapskist.

Snelle controle

Controleer of je de betekenis van de Z-reeks goed begrijpt.

Samenvatting: de Z-functie wint

Je hebt de Z-reeks met een schuivend venster opgebouwd, in lineaire tijd gezocht en hebt nu een helder alternatief voor KMP. 🎯

Gratis beginnen

Leer Voorbereiding op programmeerinterviews met een AI-tutor — gratis

Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.

Cursussen
90
Lessen
360

Veelgestelde vragen

Is de les “Z-functie voor patroonzoeken” gratis?

Ja — de volledige tekst van “Z-functie voor patroonzoeken” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Voorbereiding op programmeerinterviews wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.

Wat leer ik in “Z-functie voor patroonzoeken”?

Prefixen in de string vergelijken Je oefent met Voorbereiding op programmeerinterviews door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.

Heb ik ervaring nodig om met Voorbereiding op programmeerinterviews te beginnen?

Ervaring vooraf is niet nodig. Voorbereiding op programmeerinterviews op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.

Hoe lang duurt de les “Z-functie voor patroonzoeken”?

De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.

Kan ik code schrijven en uitvoeren in deze les over Voorbereiding op programmeerinterviews?

Ja. Elke les over Voorbereiding op programmeerinterviews bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.

Alle lessen in deze cursus

  1. KMP-prefixfunctie
  2. Polynomiale stringhashing
  3. Z-functie voor patroonzoeken
  4. Tries voor prefixopzoekingen
← Terug naar Voorbereiding op programmeerinterviews