![]() |
Buchstaben im String sortieren?
huhu wollte mal fragen, wie ich die Buchstaben von einem String sortieren kann
also aus "test" soll "estt" werden.. :) thX schonmal :) |
Re: Buchstaben im String sortieren?
Mittels ASCII-Code geht das.
Man muss den dann so wie zahlen behandeln und das Sortieren ist dann ganz einfach. ;) |
Re: Buchstaben im String sortieren?
moin
du kannst mittels abfrage auch direkt buchstaben miteinander vergleichen!
Delphi-Quellcode:
if 'a' < 'b' then
|
Re: Buchstaben im String sortieren?
Hi,
ich hätte da ne "schnellere" Idee.
Delphi-Quellcode:
Ist aber grad so aus dem Kopf entstanden. Könnte also sein das ein paar von den Funktionen nicht stimmen oder anders geschrieben werden.
var
MyStringList : TStringList; i : integer; begin MyStringList := TStringList.Create; for i := 1 to Length(s) do begin MyStingList.Add(s[i]); end; s := ''; MyStringList.Sort; for i := 0 to MyStringList.Item.Count -1 do begin s := s + MyStringList.Item[i]; end; MyStringList.Free; end; |
Re: Buchstaben im String sortieren?
@BungeeBug
du solltest s spätestens nach dem sortienen leeren, weil du an den vorhandenen einfach den sortierten wieder ranhängst! ansonsten habe ich an deine möglichkeit auch schon gedacht! :wink: |
Re: Buchstaben im String sortieren?
Zitat:
|
Re: Buchstaben im String sortieren?
:-D da habe ich mich dann wohl geirrt! :mrgreen:
oder doch nicht???? :?: |
Re: Buchstaben im String sortieren?
Hallo ReCoVer,
theoretisch handelt es sich bei Deinem Problem zwar um das Sortieren einer geordneten (nicht sortieren!) eindimensionalen Struktur, so dass Du einen der ![]() Ein denkbarer Ansatz wäre mit diesen Informationen, ein Array aufzuspannen, für das für jedes denkbare der 256 Zeichen einen Zähler hält. Iteriere über den Eingangsstring und zähle, wie oft die Zeichen vorkommen. Um nun die Ausgabe zu erstellen, iterierst Du über das Zählerarray und hängst das jeweilige Zeichen sooft an das bisherige Ergebnis, wie Du es beim Eingangsstring gezählt hast. Die Sortierung erhältst Du so "gratis", weil Dein Zählarray direkt über den ASCII-Wert des Zeichens, das gleichzeitig dem Kriterium der Ordnungsrelation entspricht, indiziert wird. Anbei eine ad hoc-Implementierung (nur zur Anschauung, gerade das Konkatenieren könnte optimiert werden):
Delphi-Quellcode:
EDIT: Das beschriebene Verfahren nennt man iÜ
function SortString(const AString: string): string;
var arChars: array[Char] of Cardinal; myChar: Char; iChar: Integer; begin // set every counter to zero FillChar(arChars, SizeOf(arChars), 0); // scan every char in string and increase counter for each // found character by one for iChar:= 1 to Length(AString) do Inc(arChars[AString[iChar]]); Result:= ''; // append found matches to result for myChar:= Low(myChar) to High(myChar) do Result:= Result+DupeString(myChar, arChars[myChar]); end; ![]() |
Re: Buchstaben im String sortieren?
Liste der Anhänge anzeigen (Anzahl: 1)
Anbei mal ein Demoprogramm mit drei total unterschiedlichen Ansätzen zur Sortierung (alle drei arbeiten nach dem ANSI Satz ;-))
...:cat:... |
Re: Buchstaben im String sortieren?
@Choose, danke das du diesen doch weniger bekannten Ansatz angesprochen hast. In fakt, für die gestellte Aufgabe ist Chooses Vorschlag bei weitem der effizienteste.
Gruß Hagen |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:48 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