Skip to content

Instantly share code, notes, and snippets.

@Bekt
Created December 20, 2012 06:56
Show Gist options
  • Save Bekt/4343399 to your computer and use it in GitHub Desktop.
Save Bekt/4343399 to your computer and use it in GitHub Desktop.
//http://coolcodebro.blogspot.com/2012/12/string-compression.html
public class StringCompression {
public static void main(String[] args) {
new StringCompression().run();
}
void run() {
String str = "aabcccccaaa";
String compr = compress(str);
System.out.printf("Original: %s (%d)%n", str, str.length());
System.out.printf("Compressed: %s (%d)%n", compr, compr.length());
}
String compress(String str) {
if(str.length() < 3)
return str;
StringBuilder compressed = new StringBuilder();
int count = 1;
char prev = str.charAt(0), current;
for(int i=1; i<str.length(); i++) {
current = str.charAt(i);
if(current != prev) {
compressed.append(prev);
compressed.append(count);
prev = current;
count = 1;
}
else
count++;
}
//Add the last repeating character
compressed.append(prev);
compressed.append(count);
if(compressed.length() < str.length())
return compressed.toString();
return str;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment