![]() |
AW: "Überlappungen" zwischen zwei Strings
Ich würde das nicht mal Zeichen genau machen in dem Fall.
Ich würde die Strings splitten und dann Wort für Wort vergleichen so lange es gleich ist. 1. Den ersten String zerteilen (Wortweise) 2. Dies von hinten nach vorne durchgehen und mit dem zweiten String (Wortweise, von vorne nach hinten) vergleichen 3. Sobald das mit den Worten nicht mehr passt, Stelle merken und aus der Schleife aussteigen. 4. Strings zusammenfügen. |
AW: "Überlappungen" zwischen zwei Strings
Zitat:
![]() Zitat:
|
AW: "Überlappungen" zwischen zwei Strings
ich würde den ersten string von hinten und den zweiten von vorne nehmen - ich weiss, hört sich jetzt schweinisch an ;)
1. Erstes Zeichen vom zweiten String unter letztes Zeichen vom ersten legen 2. Überlappung vergleichen 3. Bei Gleichheit zweiten String um eines nach vorne schieben, goto 2 4. Bei Ungleichheit hat man den überlappenden Teil gefunden |
AW: "Überlappungen" zwischen zwei Strings
Zitat:
Deine Methode würde in diesem Beispiel nur "ei" als Überlappung finden, denn der folgende Schleifendurchlauf mit "rei" und "ein" sorgt für den Abbruch. Gewünscht wäre aber vermutlich "eins zwei drei".
Code:
Auch wenn das gekünstelt ist und die "Wortbedingung" hier auch verletzt ist. ;-)
ich zähle eins zwei drei
eins zwei drei wurde gezählt Edit: bzw. würde man gar keine Überlappung finden, weil schon "i" und "e" ungleich sind. |
AW: "Überlappungen" zwischen zwei Strings
Mit TStringHelper geht das recht überschaubar:
Delphi-Quellcode:
function ConcatNoOverlap(const A, B: string): string;
var I: Integer; begin for I := Min(A.Length, B.Length) downto 1 do if string.Compare(A, A.Length - I, B, 0, I) = 0 then Exit(A.Remove(I-1) + B); Result := A + B; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz