Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Gleiche Buchstaben? (https://www.delphipraxis.net/12822-gleiche-buchstaben.html)

deusmac 4. Dez 2003 17:20


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?

Luckie 4. Dez 2003 17:29

Re: Gleiche Buchstaben?
 
Kuck dir mal die Funktion pos an. Macht das eventuell etwas leichter.

deusmac 4. Dez 2003 17:35

Re: Gleiche Buchstaben?
 
Was macht pos wenn das Zeichen mehrmals vorkommt? Einfach nur den ersten Fundort angeben?

Luckie 4. Dez 2003 17:39

Re: Gleiche Buchstaben?
 
Zitat:

Zitat von deusmac
Was macht pos wenn das Zeichen mehrmals vorkommt? Einfach nur den ersten Fundort angeben?

Was steht in der Hilfe? :roll:

Desweiteren ist ab manchen Delphi Versionen noch posex verfügbar.

Alter Mann 4. Dez 2003 17:43

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.

Kamil 4. Dez 2003 19:41

Re: Gleiche Buchstaben?
 
Ich würd's so machen:
Delphi-Quellcode:
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;
edit: kleinen Fehler korrigiert

Brüggendiek 5. Dez 2003 00:17

Re: Gleiche Buchstaben?
 
Hallo!

Leider verstehe ich die Aufgabenstellung nicht ganz!

Soll z.B. bei
Code:
abcdef
bfffdddaec
herauskommen, daß die Bedingung erfüllt ist (beide Strings enthalten alle Buchstaben von "a" bis "f" mindestens einmal)?

Dann kann man das mit Set of Char erledigen - jeden String in ein Set wandeln und dann vergleichen!

Gruß

Dietmar Brüggendiek

deusmac 11. Dez 2003 17:11

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.

nailor 11. Dez 2003 17:19

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