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;
2
3public 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 }
22
23 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();
27
28 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.