Strengsøgningsalgoritmen bruges til at finde forekomster af et specifikt mønster(understreng) i en større tekst(streng). Denne algoritme spiller en afgørende rolle i tekstbehandlings-, søgnings- og manipulationsopgaver.
Hvordan det virker
- Start med en tekst(streng) og et mønster(understreng) at søge efter.
- Gentag teksten et tegn ad gangen.
- For hvert tegn i teksten skal du sammenligne det med det første tegn i mønsteret.
- Hvis der er et match, så tjek om de efterfølgende tegn også matcher mønsteret.
- Hvis mønsteret er helt matchet, skal du registrere kampens startposition.
- Fortsæt med at søge efter mønsteret i teksten.
Eksempel
Overvej en tekst: "ababcababcabcabc" Og et mønster: "abc"
- Start ved position 0. Sammenlign "a" med det første tegn "a" i mønsteret.
- Match fundet, flyt til de næste tegn: "b" med "b", og "a" med "c".
- Fortsæt med at matche: "b" med "a", "a" med "b" og "b" med "c".
- Kamp mislykkedes på position 2.
- Start igen ved position 3. Sammenlign "a" med det første tegn "a" i mønsteret.
- Vellykket match: "a" med "a", "b" med "b" og "c" med "c".
- Optag position 3.
Mønsteret "abc" findes på positionerne 0, 6 og 9.
Eksempelkode i C++
I dette eksempel stringSearch
bruges funktionen til at finde forekomster af mønsteret "abc" i teksten "ababcababcabcabc". Resultatet vil være en vektor, der indeholder startpositionerne for kampene.