AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Sonstige Fragen zu Delphi Delphi Überprüfung: Wiederholung von Zeichenketten im String
Thema durchsuchen
Ansicht
Themen-Optionen

Überprüfung: Wiederholung von Zeichenketten im String

Ein Thema von Scorpion · begonnen am 8. Aug 2006 · letzter Beitrag vom 9. Aug 2006
Antwort Antwort
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#1

Überprüfung: Wiederholung von Zeichenketten im String

  Alt 8. Aug 2006, 16:12
Hallo,

ich muß einen String auf eine Wiederholung von Zeichenketten überprüfen. Das heisst in diesem Fall, eine Zeichenkette, darf nicht direkt nacheinander folgen, also

BB wäre falsch BAB ok
BABAB falsch und BABCAB ok
BANANE falsch, da ANAN vorkommt

habt ihr eine Idee, wie man das machen könnte ?

Vielen Dank
Gruß Nico
  Mit Zitat antworten Zitat
Benutzerbild von Nikolas
Nikolas

Registriert seit: 28. Jul 2003
1.528 Beiträge
 
Delphi 2005 Personal
 
#2

Re: Überprüfung: Wiederholung von Zeichenketten im String

  Alt 8. Aug 2006, 16:17
Leg für jede Zeichenfolge eine Liste an, in der du die Positionen des Substrings notierst. Dann schaust du in der Liste, ob zwei benachbarte Positionen weiter als die Länge des Substrings auseinanderliegen:
Bsp:
BlaBla

erster String: 'B' Positionen: 1,4; Länge des Strings: 1. 1+1<4 -> Treffer
n.ter string: 'Bla' Positionen: 1,4, Länge:3 . 1+3=4 -> Kein Treffer
Erwarte das Beste und bereite dich auf das Schlimmste vor.
  Mit Zitat antworten Zitat
HERMES

Registriert seit: 29. Nov 2004
142 Beiträge
 
#3

Re: Überprüfung: Wiederholung von Zeichenketten im String

  Alt 8. Aug 2006, 16:21
Überleg dir eine passende Grammatik dazu und dann überprüf (möglicherweise mit CYK) ob dein Wort mit der Grammatik dargestellt werden kann.
  Mit Zitat antworten Zitat
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#4

Re: Überprüfung: Wiederholung von Zeichenketten im String

  Alt 8. Aug 2006, 16:32
@Toxman: Aber das müsste ich ja mit allen Substring aller möglichen Längen machen, ist das nicht zu Speicheraufwändig?

@HERMES: Hättest du eine Idee, wie das aussehen könnte?
Gruß Nico
  Mit Zitat antworten Zitat
HERMES

Registriert seit: 29. Nov 2004
142 Beiträge
 
#5

Re: Überprüfung: Wiederholung von Zeichenketten im String

  Alt 8. Aug 2006, 16:36
Da musst du dir mal die Chomsky Hirachie ( / Formale Sprachen ) anschauen, und dann kannst du in Abhängigkeit der hirachischen Stufe deiner Grammatik eine passende Möglichkeit finden deinen Input zu überprüfen.
  Mit Zitat antworten Zitat
Hawkeye219

Registriert seit: 18. Feb 2006
Ort: Stolberg
2.227 Beiträge
 
Delphi 2010 Professional
 
#6

Re: Überprüfung: Wiederholung von Zeichenketten im String

  Alt 8. Aug 2006, 18:53
Hallo Nico,

hier ist mein Versuch:

Delphi-Quellcode:
function CheckString (const s: string): Boolean;
var
  idx, len: Integer;
begin
  Result := False;
  for idx := 1 to Length(s) - 1 do
    for len := 1 to (Length(s) + 1 - idx) div 2 do
      if CompareMem(@s[idx], @s[idx + len], len) then
        Exit;
  Result := True;
end;
Gruß Hawkeye
  Mit Zitat antworten Zitat
Scorpion

Registriert seit: 3. Nov 2002
Ort: Flörsheim
154 Beiträge
 
Delphi 5 Professional
 
#7

Re: Überprüfung: Wiederholung von Zeichenketten im String

  Alt 9. Aug 2006, 09:53
@Hawkeye219: Ja, vielen Dank, der Code funktioniert super...

An alle anderen trotzdem auch vielen Dank für die Tips
Gruß Nico
  Mit Zitat antworten Zitat
Antwort Antwort


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