SHARE
TWEET

Programming Challenge 1 - StringZipper

FamiHug Aug 2nd, 2011 228 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. /**
  2.  * @Author: FamiHug at FAMILUG
  3.  * @Version: 1.0 Tue Aug  2 23:53:23 ICT 2011
  4.  */
  5.  
  6. public class PRC01CompressString {
  7.         public static void main(String[] args)
  8.         {
  9.                 StringZipper sz = new StringZipper();
  10.  
  11.                 System.out.println("Programming Challenger 01 - FAMILUG\u2122 \n");
  12.  
  13.                 String input = "AAABBCAABDDAFF";
  14.                 System.out.println("Input: " + input + "\n");
  15.  
  16.                 String compressed = sz.compress(input);
  17.                 System.out.println("Compressed: " + compressed);
  18.  
  19.                 String extracted = sz.extract(compressed);
  20.                 System.out.println("Extracted: " + extracted);
  21.         }
  22. }
  23.  
  24. class StringZipper {
  25.         public String compress(String input)
  26.         {
  27.                 int charCounter = 1;
  28.                 char currentChar = input.charAt(0);
  29.                 char previousChar;
  30.                 StringBuffer compressedString = new StringBuffer();
  31.  
  32.                 for(int i = 1; i < input.length(); i++) {
  33.                         previousChar = currentChar;
  34.                         currentChar = input.charAt(i);
  35.                         if(currentChar == previousChar) {
  36.                                 charCounter++;
  37.                         }
  38.                         else {
  39.                                 if(charCounter != 1) {
  40.                                         //System.out.print(charCounter + "" + previousChar);
  41.                                         compressedString.append(charCounter);
  42.                                         compressedString.append(previousChar);
  43.                                 }
  44.                                 else compressedString.append(previousChar);
  45.  
  46.                                 charCounter = 1;
  47.                         }
  48.                 }
  49.                 compressedString.append(charCounter);
  50.                 compressedString.append(currentChar);
  51.                 compressedString.append("\n");
  52.                 //System.out.println(charCounter + "" + currentChar);
  53.                 return compressedString.toString();
  54.         }
  55.  
  56.         public String extract(String compressedString) {
  57.                 int loopTimes = 0;
  58.                 int currentChar;
  59.                 StringBuffer extracted = new StringBuffer();
  60.  
  61.                 for(int i = 0; i < compressedString.length(); i++)
  62.                 {
  63.                         if(Character.isDigit(compressedString.charAt(i))) loopTimes = loopTimes * 10 + Character.digit(compressedString.charAt(i), 10);
  64.                         else
  65.                         {
  66.                                 if(loopTimes == 0) loopTimes = 1;
  67.                                 for(int j = 0; j < loopTimes; j++) {
  68.                                         //System.out.print(compressedString.charAt(i));
  69.                                         extracted.append(compressedString.charAt(i));
  70.                                 }
  71.                                 loopTimes = 0;
  72.                         }
  73.                 }
  74.                 //System.out.println();
  75.                 extracted.append("\n");
  76.                 return extracted.toString();
  77.         }
  78.  
  79. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top