Vorkommen einer Anzahl von gleichen Zeichen in String testen
-
Hallo,
ich habe eine nullterminierte Zeichenkette, Länge 450 Zeichen. Diese wird mit beliebigen Buchstaben gefüllt. Ich will nun wissen, ob das Zeichen "z" 5-mal darin vorkommt. Ohne Hilfe einer Bibliothek.Ich würde jetzt so vorgehen: Ich durchsuche von links nach rechts die Kette nach dem ersten Vorkommen eines "z". Dann merke ich mir mit einem Zähler, dass das das erste "z" ist. Wandere dann nach rechts ein Zeichen weiter und überprüfe, ob es auch ein "z" ist. Wenn ja, erhöht sich der Zähler auf 2, ansonsten setze ich den Zähler zurück und ich beginne an der Stelle mit einem neuen Test.
Hat dazu jemand einen Verbesserungsvorschlag bzw. einen schnellen Algo?
Danke.
-
man da noch einfacher machen????????????????????????
Du musst zaehlen oder willst erst ueberpruefen ob sich nach einer statistischen Häufigkeit ueberhaupt lohnt einen bestimmten Index ueberhaupt
zu lesen ob sichs lohnt zu zählen :pIch denke doch das hier das naheliegenste auch das effektivste ist wenn
man bei solchen einfachen Sachen schon Haarspalterei betreibt wieveil Zeit will man dann fuer andere Ding aufbringen? Ne ne das zaehlen ist schon das beste in diesen Fall!!!mfg
-
Du machst sicher Anspielungen wegen der 450 Zeichenanzahl
man koennte dann höchstens wegen zu langer Wartezeit oder so
diese Zaehlschleife in nen THREAD packen damit das Programm nicht blockiert
was anderes fällt mir im Moment auch nicht ein aber wie gesagt
wnn du nur Zeichen zählst und die Daten sind von der Information variabel
(immer andere Zeichen) mussde immer noch zählen solange man ein Array verwendet
wenn de die Zeich jedoch nach einen Kriterium in nem Baum sammelst
was weiss ich alle Konsonanten im linken Aussenzweig alle Vokale im rechten
und noch komprimieren tust kann man da mehr machen.
aber wenn de alles beim Array lässt kannste nur zaehlen! und das Zeichen für Zeichenmfg
-
Du könntest evtl. den String vorher mit qsort sortieren, dann liegen alle identischen Zeichen dicht beieinander. Aber sonst kann man da nicht viel machen.
Gruß Tobias