AuK/ String matching WS13-14

Aus ProgrammingWiki

Wiki-Quelltext dieser Seite.

<language>Java</language>
<language>Java</language>
== Allgemein/Festlegungen ==

String matching befasst sich allgemein mit dem Finden eines Wortes in einem Text. <br>
Beim Text handelt es sich um eine Aneinanderreihung von Zeichen (der normalen ASCII-Tabelle) und wird mit ''t'' abgekürzt. Das Wort setzt sich ebenfalls aus den selben Zeichen zusammen, hat jedoch (in dem Fall) stets eine geringere länge als der Text. Abgekürzt wird es mit ''w'' und kann auch aus mehreren Wörtern bestehen, wird aber im Folgenden nur als "Wort" bezeichnet.

<language>Java</language>
== Naiver Algorithmus ==

Der Algorithmus sucht und vergleicht Zeichen für Zeichen im Text.

<code id="52d0732515910">
void nativeSuche(String text, String wort){
  int laengeText = text.length();
  int laengeWort = wort.length();
  char[] cWort = wort.toCharArray();
  char[] cText = wort.toCharArray();		  
  int position = 0;
  int aktZeichen;
  while (position <= laengeText-laengeWort){
  aktZeichen = 0;
    while (aktZeichen < laengeWort && wort.charAt(aktZeichen)==text.charAt(position+aktZeichen)){
      aktZeichen++;
    }
    if (aktZeichen == laengeWort){
      System.out.println("Wort an der Stelle " + (position+1) + " im Text gefunden.");
    }
    position++;
  }
}
</code>

<run id="52d0732515992">
  nativeSuche("Das ist das Haus vom Nikolaus","Maus");
</run>

== Weitere Algorithmen ==

Einige weitere Algorithmen.

== Der Boyer-Moore-Horspool Algorithmus ==

Ein sehr bekannter Algorithmus für das String-Matching-Problem.