ABBCCCDDDD zu ABBC3D4 kodieren!

Status
Nicht offen für weitere Antworten.

Java_Cup

Mitglied
Wie codiere ich
zum Beispiel:

ABBCCCDDDD

zu ABBC3D4???



und dann dekodiert,
von ABBC3D4

zu ABBCCCDDDD zurück

Ich habe das mit String, und substring probiert aber komme nicht weiter !Und jetzt? :bahnhof:
 
Also du müsstest dazu jeden Buchstaben einzelnd mit dem vorherigen vergleichen und dann bei gleichen buchstaben eine variable hochzählen lassen und dann das ganze an nen StringBuffer dranhängen. Wär ne möglichkeit. mal so als denkanstoß
 
und wie mache ich das am besten?
mit indexOf und substring?
Das Problem ist, wi mache ich das mit den einzelnen Buchstaben?Wenn ich 2 Wörter vergleichen müsste wäre es einfacher!
 
Also. Denn kau ich's dir mal vor :wink:
Code:
class Test {

     public static void main(String args[]) {
          System.out.println(makeShort("ABBCCCDD"));
     }

     public static String makeShort(String in) {
          StringBuffer out = new StringBuffer();
          int j=1,i=1;

          for(; i<in.length(); i++) {
               if(in.charAt(i) == in.charAt(i-1))
                    j++;
               else {
                    if(j>1)
                         out.append(in.charAt(i-1)).append(j);
                    else
                         out.append(in.charAt(i-1));
                    j=1;
               }
          }
          out.append(in.charAt(i-1));
          if(j>1)
               out.append(j);

          return out.toString();
     }
}

Also die methode is so denk ich übernehmbar.
 
Schon mal was von einer Touringmaschine gehört?
die behandelt nämlich solche Probleme.

deathbyaclown: beleidigung rausgenommen
 
Das ganze klingt irgendwie nach RLE: Run Length Encoding. Das wird bspw. vom Grafikformat PCX benutzt um die Daten des Bildes optimaler Speichern zu können. 🙂
Unter bestimmten Aspekten könnte man sogar schon von einem Packer-Algorithmus reden 😉 .
 
und dann dekodiert,
von ABBC3D4
zu ABBCCCDDDD zurück
jo, ist doch ein klassisches Kompressionsverfahren

aber wenn du das so simpel angehst, was passiert dann, wenn der eingabestring schon eine Zahl drin hatte, z.B. U2ISTFUERMAMA, soll dein Superkodierer dann einfach UUISTFUERMAMA draus machen....?

das ganze ist nicht so trivial wies aussieht
 
Status
Nicht offen für weitere Antworten.

Neue Themen


Zurück
Oben