JAVA Runlength

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • JAVA Runlength

    Quellcode

    1. /**
    2. *
    3. * @author Torben Brodt
    4. * @version 1.0
    5. *
    6. * <p />Run Length Encoding
    7. * <p />Funktioniert mit Java < 1.5
    8. */
    9. public class A08_Runlength {
    10. /**
    11. * @param args
    12. */
    13. public static void main(String[] args) {
    14. String eingabe = "AAAABBECCCCCDDDDDD";
    15. String conv = runlengthEncode(eingabe);
    16. System.out.println("Plain:\t" + eingabe);
    17. System.out.println("Short:\t" + conv);
    18. System.out.println("Short:\t" + runlengthDecode(conv));
    19. }
    20. /**
    21. * Wandelt String in Runlength um
    22. * @param eingabe -> der komplette String
    23. * @return -> der gekürzte String
    24. */
    25. static String runlengthEncode(String eingabe)
    26. {
    27. eingabe += "$";
    28. int zaehler = 1, i=0;
    29. while(eingabe.charAt(i) != '$') {
    30. if(eingabe.charAt(i) != eingabe.charAt(i+1)) {
    31. if(zaehler > 1) {
    32. String anfang = eingabe.substring(0, i-zaehler+2) + zaehler;
    33. String ende = eingabe.substring(i+1);
    34. eingabe = anfang+ende;
    35. i=0;
    36. }
    37. zaehler=1;
    38. } else {
    39. zaehler++;
    40. }
    41. i++;
    42. }
    43. return eingabe.substring(0, eingabe.length()-1);
    44. }
    45. /**
    46. * Wandelt Runlength in String um
    47. * @param eingabe
    48. * @return
    49. */
    50. static String runlengthDecode(String eingabe) {
    51. StringBuffer ausgabe = new StringBuffer();
    52. int i=0;
    53. eingabe += "-$";
    54. String zahl = "";
    55. char repeat = '\0';
    56. do {
    57. char s = eingabe.charAt(i);
    58. if(Character.isDigit(s)) {
    59. if(repeat == '\0')
    60. repeat = eingabe.charAt(i-1);
    61. zahl += s;
    62. } else {
    63. if(zahl.length() > 0) {
    64. for(int j=0; j<Integer.parseInt(zahl)-1; j++)
    65. ausgabe.append(repeat);
    66. zahl = "";
    67. repeat = '\0';
    68. }
    69. if(eingabe.charAt(i+1) != '$')
    70. ausgabe.append(s);
    71. }
    72. i++;
    73. } while(eingabe.charAt(i) != '$');
    74. return ausgabe.toString();
    75. }
    76. }
    Alles anzeigen