![]() |
Gleiche Buchstaben?
Ich würde gerne Überprüfen ob inzwei Zeichenketten jeweils die gleichen buchstaben sind. Mein Ansatz war die eine Zeichenkette Zeichen für Zeichen in ein Array zu packen und bei der anderen einfach bei jedem einzelnen Zeichen zu schauen obs im array vorkommt. Bei dieser Methode kann allerdings in der einen Zeichenkette ein Zeichen doppelt vorkommen und der Algorithmus bemerkt das nicht. Kann man das irgendwie einfacher und ohne Probleme lösen?
|
Re: Gleiche Buchstaben?
Kuck dir mal die Funktion pos an. Macht das eventuell etwas leichter.
|
Re: Gleiche Buchstaben?
Was macht pos wenn das Zeichen mehrmals vorkommt? Einfach nur den ersten Fundort angeben?
|
Re: Gleiche Buchstaben?
Zitat:
Desweiteren ist ab manchen Delphi Versionen noch posex verfügbar. |
Re: Gleiche Buchstaben?
Besser wäre es in diesem Fall nicht mit Strings zu arbeiten, sonder mit pChar. Die Routinen für die
Nullterminierten Zeicheketten geben dort mehr her. z.B: StrLScan, StrRScan usw. |
Re: Gleiche Buchstaben?
Ich würd's so machen:
Delphi-Quellcode:
edit: kleinen Fehler korrigiert
function GleicheBuchstaben(s, t: string): boolean;
var a, b: array of integer; i: integer; begin result:=false; if length(s)<>length(t) then exit; SetLength(a, 256); SetLength(b, 256); fillchar(a[0], 256*sizeof(integer), 0); fillchar(b[0], 256*sizeof(integer), 0); for i:=1 to length(s) do begin inc(a[ord(s[i])]); inc(b[ord(t[i])]); end; result:=CompareMem(@a[0], @b[0], 256*sizeof(integer)); SetLength(a, 0); SetLength(b, 0); end; |
Re: Gleiche Buchstaben?
Hallo!
Leider verstehe ich die Aufgabenstellung nicht ganz! Soll z.B. bei
Code:
herauskommen, daß die Bedingung erfüllt ist (beide Strings enthalten alle Buchstaben von "a" bis "f" mindestens einmal)?
abcdef
bfffdddaec Dann kann man das mit Set of Char erledigen - jeden String in ein Set wandeln und dann vergleichen! Gruß Dietmar Brüggendiek |
Re: Gleiche Buchstaben?
Die Bedingung soll nur erfüllt sein wenn aaabbbccc und aaabbbccc da stehn. bei abc aaabbbccc soll sie nicht erfült sein.
|
Re: Gleiche Buchstaben?
ja wie? die Buchstaben sollen die gleichen sein, und die Reihenfolgen auch und die Anzahl auch? Dann schau dir mal "=" an.
An sonsten sag mal genauer, was su willst! Das wird dann auf irgendwas mit "pos" rauslaufen, nehme ich an! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:57 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