String Compression in Java
Compress a string as character followed by count (basic run-length encoding).
IntermediateModule 4: String ProgramsExample 24 of 25
string-compression.java
1import java.util.Scanner;23public class Main {4 public static String compress(String s) {5 if (s.isEmpty()) return s;6 StringBuilder sb = new StringBuilder();7 char prev = s.charAt(0);8 int count = 1;9 for (int i = 1; i < s.length(); i++) {10 char c = s.charAt(i);11 if (c == prev) {12 count++;13 } else {14 sb.append(prev).append(count);15 prev = c;16 count = 1;17 }18 }19 sb.append(prev).append(count);20 return sb.toString();21 }2223 public static void main(String[] args) {24 Scanner sc = new Scanner(System.in);25 System.out.print("Enter a string: ");26 String s = sc.nextLine();2728 System.out.println("Compressed: " + compress(s));29 sc.close();30 }31}
Output
Enter a string: aaabbc Compressed: a3b2c1
What's going on
We count consecutive equal characters and append character+count.