AGB  ·  Datenschutz  ·  Impressum  







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

"Ü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
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
910 Beiträge
 
Delphi 12 Athens
 
#1

AW: "Überlappungen" zwischen zwei Strings

  Alt 15. Jun 2020, 08:55
Dann würde ich erstmal die Methode von mir (bzw. die von Nersgatt, das ist ja identisch) nehmen. Kann man natürlich in der Hinsicht optimieren, dass das erste "Übereinanderlegen" so anfängt, dass der untere String rechtsbündig mit dem ersten ist. Vorher ergibt die Suche ja keinen Sinn.

Und wenn eine gute (d.h. lineare) Worst-Case-Laufzeit wichtig ist (Probleme machen bei solchen Ansätzen Strings wie "abababababaC"), dann schau dir Knuth-Morris-Pratt an und modifiere den etwas. Das "Muster" wäre dann der zweite String, und die Modifikation muss so sein, dass das Muster auch als "gefunden" gilt, wenn es nach rechts über den "Text" (also der String in dem gesucht wird) herausragt.

"Bruteforce" wäre natürlich eine Schleife mit AnsiStartStr und AnsiEndStr (oder vergleichbaren Ansätzen, siehe Beitrag von Redeemer). Bei kurzen Strings ist das aber sicherlich vertretbar, d.h. wenn die Programmierkosten hier relevanter sind als eine gute Laufzeit.
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  Mit Zitat antworten Zitat
Der schöne Günther

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

AW: "Überlappungen" zwischen zwei Strings

  Alt 15. Jun 2020, 09:07
schau dir Knuth-Morris-Pratt an
Vielen Dank an alle, das werde ich tun.

Vorher schaue ich aber ob ich nicht vielleicht doch um den Abgleich drum herum komme 😎
  Mit Zitat antworten Zitat
Benutzerbild von Gausi
Gausi

Registriert seit: 17. Jul 2005
910 Beiträge
 
Delphi 12 Athens
 
#3

AW: "Überlappungen" zwischen zwei Strings

  Alt 15. Jun 2020, 09:20
Vielen Dank an alle, das werde ich tun.
Vielleicht, um das klar zu stellen: KMP ist theoretisch interessant, in der Praxis ist das bei "normalen" Texten eher nicht so wichtig. Diesen Programmieraufwand kann man sich in der Regel sparen, da die problematischen Muster praktisch nie auftreten. Relevant wird das ggf., wenn deine Strings DNA-Sequenzen sind (und somit die Anzahl der verschiedenen Buchstaben sehr gering ist), aber sonst eher nicht.

Habe damals meine Diplomarbeit darüber geschrieben, daher reite ich da manchmal gerne drauf rum.
Ein kleines Animationsprogramm, was z.B. auch die Anzahl der Vergleiche bei verschiedenen Verfahren ausgibt, gibt es auf meiner Webseite.

Aber wenn ich das nochmal überdenke: Der Boyer-Moore-Ansatz könnte hier (wieder etwas modifiziert) auch funktionieren ... (und der ist leichter zu implementieren, imho).
Being smart will count for nothing if you don't make the world better. You have to use your smarts to count for something, to serve life, not death.
  Mit Zitat antworten Zitat
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 01:07 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