AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi "Überlappungen" zwischen zwei Strings
Thema durchsuchen
Ansicht
Themen-Optionen

"Überlappungen" zwischen zwei Strings

Ein Thema von Der schöne Günther · begonnen am 15. Jun 2020 · letzter Beitrag vom 15. Jun 2020
Antwort Antwort
Seite 2 von 2     12   
Benutzerbild von Moombas
Moombas

Registriert seit: 22. Mär 2017
Ort: bei Flensburg
525 Beiträge
 
FreePascal / Lazarus
 
#11

AW: "Überlappungen" zwischen zwei Strings

  Alt 15. Jun 2020, 10:25
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.
Der Weg ist das Ziel aber man sollte auf dem Weg niemals das Ziel aus den Augen verlieren.
  Mit Zitat antworten Zitat
Der schöne Günther

Registriert seit: 6. Mär 2013
6.156 Beiträge
 
Delphi 10 Seattle Enterprise
 
#12

AW: "Überlappungen" zwischen zwei Strings

  Alt 15. Jun 2020, 10:33
Relevant wird das ggf., wenn deine Strings DNA-Sequenzen sind
Und ich dachte immer das wird so gemacht:
https://xkcd.com/2298/


Ich würde die Strings splitten und dann Wort für Wort vergleichen so lange es gleich ist
Ja, das würde ich tun. Bei sind es wirklich "Worte" die immer durch das gleiche Zeichen getrennt wären. Danke 👍
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
678 Beiträge
 
Delphi 12 Athens
 
#13

AW: "Überlappungen" zwischen zwei Strings

  Alt 15. Jun 2020, 12:07
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
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
877 Beiträge
 
Delphi 11 Alexandria
 
#14

AW: "Überlappungen" zwischen zwei Strings

  Alt 15. Jun 2020, 12:17
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
Damit findest du aber ggf. nicht die komplette Überlappung.
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:
ich zähle eins zwei drei
                      eins zwei drei wurde gezählt
Auch wenn das gekünstelt ist und die "Wortbedingung" hier auch verletzt ist.

Edit: bzw. würde man gar keine Überlappung finden, weil schon "i" und "e" ungleich sind.
The angels have the phone box.
  Mit Zitat antworten Zitat
Benutzerbild von Uwe Raabe
Uwe Raabe

Registriert seit: 20. Jan 2006
Ort: Lübbecke
11.442 Beiträge
 
Delphi 12 Athens
 
#15

AW: "Überlappungen" zwischen zwei Strings

  Alt 15. Jun 2020, 13:51
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;
Uwe Raabe
Certified Delphi Master Developer
Embarcadero MVP
Blog: The Art of Delphi Programming
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 2     12   


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz