Hallo! Ich habe eine String, indem die Buchstaben L,R,V,Z vorkommen. Zu einem suche ich eine Möglichkeit um herauszufinden ob auch nur diese Buchstaben im String vorkommen zum anderen würde ich aber auch gerne aufeinanderfolgende gleiche Buchstaben zusammenfassen: Aus "RLLLVVLRLLRR" soll dann "R3L2VLR2L2R" werden. D.h. meine erste Frage, müsste dahin ergänzt werden, dass so ein String a la als "R3L2VLR2L2R" als "richtig" erkannt wird. Mein Problem: Hab keine Ahnung, wie ich weder das eine, noch das andere löse.. Könnt ihr mir helfen? Danke! Gruß Ivo
Ivo schrieb: > Mein Problem: Hab keine Ahnung, wie ich weder das eine, noch das andere > löse.. 1.Bleistift und Papier schnappen. 2.Eine beliebige mögliche Zeichenfolge hinmalen. 3.Das Problem buchstabe für Buchstabe von Hand lösen. Dabei schauen, wie du es selbst machst.
Ein Algorithmus ist erst mal "nur" eine Verarbeitungsvorschrift. Ob die
in Umgansgsprache, Klingonisch, Basic oder C aufgeschrieben ist, ist
erst einmal egal.
versuche, das Problem erst mal in Umgangssprache zu lösen, z.B.
setze den Wert von "vorheriger_buchstabe" auf <NICHTS>
setze den Wert von "anzahl_vorheriger__gleicher_buchstaben" auf 0
solange der Eingbestring nicht beendet ist, mache:
{
nimm den nächsten Buchstaben und speichere ihn irgendwo zwischen
prüfe, ob der Buchstabe in [L,R,V,Z]
falls ja: Mache irgendwas /* zum Beispiel eine Hupe einschalten
*/
break
falls nein:
prüfe, ob der zwischengespeicherte Buchstabe identisch ist mit
"vorheriger_buchstabe"
falls ja: ....
falls nein: ....
....etc....
}
Und so machst du halt weiter, bis alles das formuliert ist, was du haben
möchtest.
Danach übersetzt du das in die Programmiersprache deiner Wahl, und schon
bist du fertig;-)
Übrigens:
Wenn du schon sowas machst, wäre vielleicht anstelle
> Aus "RLLLVVLRLLRR" soll dann "R3L2VLR2L2R" werden.
diese Variante "zweckmäßiger": (für wen auch immer, der später diesen
geänderten String weiter verarbeiten soll)
Aus "RLLLVVLRLLRR" soll dann "1R3L2V1L1R2L2R" werden.
(also auch die Einzel-Schritte mit einem Zahlenwert versehen)
Grund: "der Nutzende" des geänderten Strings kann dann einfacher den
String verarbeiten, und braucht nicht erst noch zusätzlich den String
wieder aufbereiten mit
"falls Folgendes Zeichen ein Buchstabe ist, und vorheriges Zeichen auch
ein Buchstabe war, dann setze Zähler zu "1", ansonsten nimm den
Zählerwert"
Das folgende System bekommt also die Information schon vorgekaut und
braucht nicht mehr selber drüber nachzudenken, sondern kan direkt
ausführen.
Geh ins Internet und schau dir einfach mal die String Klasse an. Dann wirst du merken, dass man deine Probleme ganz leicht lösen kann. Da sollte was dabei sein, wenn ich mich nicht irre. http://msdn.microsoft.com/de-de/library/system.string%28v=vs.80%29.aspx
Klingt irgendwie nach Hausaufgaben. Schau dir mal in Wikipedia den RLE (Run length encoding) Algorithmus an. Der macht im Prinzip genau das.
uiui, da fehlt doch glatt ein "nicht" in dieser Zeile: prüfe, ob der Buchstabe <NICHT> in [L,R,V,Z] naja, Ivo hat seine Hausaufgaben oder seine Robotersteuerung bestimmt schon fertig ....
Ich hatte grade ein bisschen Lust zu Programmieren... :) Vielleicht hilft dir die angehängte Klasse ja ein wenig weiter!
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.