Z-functie voor patroonzoeken
Prefixen in de string vergelijken
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, 0Binnen 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] += 1Het 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. 🎯
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
- KMP-prefixfunctie
- Polynomiale stringhashing
- Z-functie voor patroonzoeken
- Tries voor prefixopzoekingen