Immer wieder ist es notwendig, zwei Strings miteinander zu vergleichen und festzustellen, wie ähnlich sie sich sind. Hierzu gibt es verschiedene Möglichkeiten, z. B. könnte man einfach die Länge beider Strings vergleichen oder ob sie die gleichen Buchstaben enthalten. Etwas komplizierter wird es, wenn man der Reihenfolge der Buchstaben eine Bedeutung zumisst. Dann könnte man prüfen, ob es eine Sequenz von Buchstaben gibt, die in beiden Strings in der gleichen Reihenfolge vorkommen. Die längste dieser Sequenzen ist die Longest Common Subsequence. Oder man überlegt sich, wie viele Editier-Operationen (Einfügen, Löschen, Ersetzen) notwendig sind, um aus dem ersten String den zweiten zu erzeugen. In diesem Artikel geht es um diese Algorithmen. weiterlesen

Ab einer gewissen Projektkomplexität ist es sinnvoll, Teilprojekte zu erstellen. Das gilt natürlich auch für die Software-Entwicklung mit Maven.

Obwohl es doch einfach sein sollte, in Eclipse ein solches Maven-Multi-Projekt zusammen mit Teilprojekten zu erstellen, gibt es einige Stolperfallen hierbei. In diesem Artikel möchte ich in einfachen Schritten das Vorgehen darstellen. weiterlesen

In der normalen Welt der Programmierung, also mit imperativen Sprachen wie C, C++, Java usw. findet die rekursive Programmierung selten Anwendung. Statt dessen werden Schleifen eingesetzt, um Abläufe zu wiederholen. Dieser Artikel soll eine Lanze für die Rekursion brechen, denn der resultierende Code ist elegant und ausdrucksstark. weiterlesen

Es gibt bereits viele Implementierungen von Hash-Tabellen, jedoch leiden viele darunter, dass das häufige Löschen von Einträgen zu einer deutlichen Performance-Verschlechterung führt. Deshalb habe ich einen Algorithmus aus dem Jahr 1989 genommen, um eine eigene Implementierung in Scala zu erstellen. Beschrieben wird der Algorithmus im Journal of Algorithms, Volume 10, 1989 im Artikel Hash table collision resolution with direct chaining von Gary D. Knott und Pilar De La Torre. weiterlesen