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:
 

Dreezard

Bekanntes Mitglied
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ß
 

Java_Cup

Mitglied
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!
 

Dreezard

Bekanntes Mitglied
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.
 
C

chef

Gast
Schon mal was von einer Touringmaschine gehört?
die behandelt nämlich solche Probleme.

deathbyaclown: beleidigung rausgenommen
 

Grizzly

Top Contributor
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 ;) .
 

Bleiglanz

Gesperrter Benutzer
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.
Ähnliche Java Themen

Ähnliche Java Themen

Neue Themen


Oben