C#: Hilfe bei "Algorithmus"

Gast #2112310
Lesenswert?

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
Gast #2112320
Lesenswert?

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.
#2112323
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren