Merkkijonohakualgoritmia käytetään tietyn kuvion(osamerkkijonon) esiintymien etsimiseen suuremmasta tekstistä(merkkijonosta). Tällä algoritmilla on ratkaiseva rooli tekstinkäsittely-, haku- ja käsittelytehtävissä.
Kuinka se toimii
- Aloita etsittävällä tekstillä(merkkijono) ja kuviolla(osamerkkijono).
- Toista tekstiä yksi merkki kerrallaan.
- Vertaa jokaista tekstin merkkiä kuvion ensimmäiseen merkkiin.
- Jos vastaavuus löytyy, tarkista, vastaavatko myös seuraavat merkit kuviota.
- Jos kuvio on täysin yhteensopiva, kirjaa ottelun aloitussijainti.
- Jatka kuvion etsimistä tekstistä.
Esimerkki
Harkitse tekstiä: "ababcababcabcabc" ja kuviota: "abc"
- Aloita paikasta 0. Vertaa "a" kuvion ensimmäiseen merkkiin "a".
- Vastaavuus löydetty, siirry seuraaviin merkkeihin: "b" ja "b" ja "a" ja "c".
- Jatka yhdistämistä: "b":llä "a", "a"b":llä ja "b":llä "c".
- Ottelu epäonnistui sijainnissa 2.
- Aloita uudelleen kohdasta 3. Vertaa "a" kuvion ensimmäiseen merkkiin "a".
- Onnistunut ottelu: "a" kirjaimella "a", "b" kirjaimella "b" ja "c" kirjaimella "c".
- Äänityspaikka 3.
Kuvio "abc" löytyy paikoista 0, 6 ja 9.
Esimerkkikoodi C++:ssa
Tässä esimerkissä stringSearch
funktiota käytetään etsimään kuvion "abc" esiintymiä tekstistä "ababcababcabcabc". Tuloksena on vektori, joka sisältää otteluiden aloituspaikat.