Hallo,
Ich würde einen Algorythmus (wenns geht in Java ausprogrammiert) suchen, welcher mir aus 2 Strings einen diff-String erstellt - mit dem ich dann den ersten patchen kann damit ich den zweiten draus bekomm.
Im Grunde also eigentlich was rsync macht, nur für Strings ![]()
Ich habe schon eine Klasse gefunden welche exakt das macht was ich suche:
Code
String s1 = "Hello I am a very small string";
String s2 = "Hella I am a very small ding";
String difference = new StringDiff().exec(s1, s2);
String patchedString = StringDiff.apply(s1, difference);
--> s2.equals(patchedString) :-)
Leider ist die Implementierung sehr, sehr schlecht (ich glaub theta(n^2)) und der Speicherverbrauch enorm.
Wenn der String 1000 zeichen lang ist, wird ein 1000x1000-int[] angelegt (4MB) :-/
Kennt ihr zufällig Implementierungen welche auch bei großen Datenmengen noch zuverlässig Arbeiten?
Danke im Vorraus, lg Clemens